黑马程序员技术交流社区
标题:
关于“输出一个字符串中每个字符出现的次数”求指点!
[打印本页]
作者:
彈指っ紅顏老
时间:
2014-12-31 14:19
标题:
关于“输出一个字符串中每个字符出现的次数”求指点!
#import <Foundation/Foundation.h>
//输出一个字符串中每个字符出现的次数
int main() {
NSMutableString *str = [[NSMutableString alloc] initWithFormat:@"asdkjafawfauwiufawefp"];
// NSMutableArray *array ;
for (int i = 0;i<str.length;i++)
{
unichar c1 = [str characterAtIndex:i];
int count =0;
for (int j = 0; j<str.length; j++)
{
unichar c2 = [str characterAtIndex:j];
if (c1 == c2)
{
count++;
}
}
NSLog(@"%c有%d个\n",c1,count);
}
return 0;
}
复制代码
倒是可以求出每个字符出现的字数,可是想了半天没解决重复的问题,麻烦大神帮个忙!非常感谢!
作者:
彈指っ紅顏老
时间:
2014-12-31 14:29
急求,在线等,各位来帮个忙呀~
作者:
chasedream
时间:
2014-12-31 15:33
#import <Foundation/Foundation.h>
int main()
{
NSString *str =@"dfaaggahahghf";
NSMutableArray *array = [NSMutableArray array];
//定义一个临时存放字符的变量
unichar temp = ' ';
for(int i =0;i<str.length;i++)
{
unichar c =[str characterAtIndex:i];
if(temp != c)
{
[array addObject: c];
}
temp =c;
}
for(int j=0;j<array.count;i++)
{
int count =0;
for(int m=0;m<str.length;m++)
{
unichar c1 =[str chararcterAtIndex:i];
if(c1==array[i])
count++;
}
NSLog(@"%c---%d",array[i],count);
}
return 0;
}
复制代码
我不知道有没有语法错误不,我没XCODE,没法给验证,我感觉我的思路是对的。第一步:我先把字符串中的每个字符挑选出来。
第二步:在遍历字符串判断。
最简单的方式应该是遍历一次,直接算出来的。水平不到,想不到那么深
作者:
午后的猫
时间:
2014-12-31 16:12
你第一个循环除了连续出现的字符不会重复插入数组,隔开的重复字符还是会重复吧...
作者:
zx413331474
时间:
2014-12-31 17:02
给你一个思路,自己想吧,先想一想这是什么关系,一个字符对应一个出现的次数,
而且每个字符不能重复。没错,就是NSDictionary,字符相当于key,次数相当于value
而且key不能重复。将每一个字符做一次判断用objectforkey:字符,
如果得出的是nil,则说明没有这个key,剩下的和你的一样了。
作者:
zx413331474
时间:
2014-12-31 18:19
楼主没有给我回复,伤不起啊,还是把我的想法发给你把,希望你转换成你的思路。
另外由于没有Xcode,具体有什么小毛病不知,楼主自己琢磨吧!!
/*
需求:统计一个字符串中每个字符出现的次数。
思路:1.每个字符和出现的次数有一个对应的关系。而且字符不能重复统计
所以用到了字典。
2.每个字符出现的次数,即要遍历字符串,用到循环。
3.遍历过程中发现key(字符)对应的值不存在,增加字典新元素。
对应的值为1. 否则对应的值(次数)加1,
*/
#import <Foundation/Foundation>
int main()
{
NSString *str = @"dkjfeijk";
// 创建一个可变字典,用于接收数据。
NSMutableDictionary *md = [NSMutableDictionary dictionary];
// 遍历字符串,统计每个字符出现的次数。
for(int i = 0; i<str.length; i++)
{
// 用c记录每个出现的字符
unichar c = [str characterAtIndex:i];
// 将字符转换成对象
NSNumber *numIn = [NSNumber numberWithChar:c];
// 通过获取该字符对应的值。
NSNumber *numCount = [NSDictionary objectForKey:numIn];
// 值不存在则创建一个键值对。
if( numCount == nil)
{
[md setObject:@1 forKey:numIn];
}
else // 值存在,则相应的值+1.
{
int count = [numCount intValue];
count++;
NSNumber *countValue = [NSNumber numberWithInt:count];
[md setObject:countValue forKey:numIn];
}
}
NSLog(@"%@",md);
return 0;
}
复制代码
<p> </p>
复制代码
作者:
任冰冰
时间:
2014-12-31 20:47
告诉你一个思路:
每一个计算一个字母就把相同的字母删除(删除的同时就记录删除的次数),直到可变字符串为空
作者:
chasedream
时间:
2014-12-31 21:10
zx413331474 发表于 2014-12-31 18:19
楼主没有给我回复,伤不起啊,还是把我的想法发给你把,希望你转换成你的思路。
另外由于没有Xcode,具体有 ...
学习了,的确,字典应该是更好的解决方案,遍历一次直接完事
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2