把一个字符串按照单词反转过来,比如 "the sky is in blue",反转成"blue in is sky the"
用OC的就比较简单了,
1.先用空格切割这个字符串,
2.然后反转数组,
3.最后在把数组用空格join起来就可以了.
- (void)viewDidLoad {
[super viewDidLoad];
// oc实现
NSString * str = @"the sky is blue";
NSArray * array = [str componentsSeparatedByString:@" "];
NSString * result = @"";
NSArray * resultArray = [[array reverseObjectEnumerator] allObjects];
result = [resultArray componentsJoinedByString:@" "];
NSLog(@"%@",result);
}
c语言的实现才是重点,
1.移动到最后找出字符串的最后一个字符
2.left向前寻找单词的边界,如果为' ',说明是单词的分隔了
3.找到后left和right之间的就是一个完整的单词,加入到result中
4.继续2,3步,直到left==0, 这时result中的就是结果了,注意处理' '的情况
// c语言实现
char * str = "the sky is in blue";
// 存放结果字符串
char result[100] ={};
// 这个单词的左边
int left = 0;
// 单词的右边
int right = 0;
// result数组的下表
int resultI = 0;
// 先找到原始字符串的最后一个char的下表
for (int i = 0; str[i]!='\0'; i++) {
left = right = i;
}
while (left >= 0) {
// left开始左移,寻找单词的最左边
while (str[left]!=' ' && left>0) {
left--;
}
// 把这个单词放入到result中,空格单独处理下
for (int i = left; i<=right; i++) {
if (str[i] == ' ' ) {
continue;
}
result[resultI] = str[i];
resultI ++;
}
// 手动在后面追加空格
result[resultI] = ' ';
resultI++;
// 找下一个单词
right = left;
left --;
}
// 去掉最后一个空格
result[resultI-1] = '\0';
NSLog(@"%s",result);