黑马程序员技术交流社区
标题:
在一个已知的字符串中查找最长单词
[打印本页]
作者:
胡胡胡胡胡
时间:
2014-11-26 18:03
标题:
在一个已知的字符串中查找最长单词
在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。
作者:
从今以后
时间:
2014-11-26 22:31
想了老半天只能这样了有点啰嗦。。
#include <stdio.h>
#include <string.h>
int main() {
char ch[100]; // 存字符串差不多够了。。
printf("请输入字符串:\n");
// 录入除了'\n'以外的字符,为了能录入空格
// gets有个警告我就百度了这个-_-||
scanf("%[^'\n']", ch);
char *p = ch;
char temp[20]; // 临时存字符用
char str[20] = {0}; // 存最长的估计够了
int max = 0; // 记录最长单词字数
int count; // 记录单词字符数
while (*p != '\0') {
count = 0; // 计数器每循环1次都清零
memset(temp, 0, 20); // temp临时数组也是
// 当前字符不是空格也不是尾巴
while (*p != ' ' && *p != '\0') {
temp[count] = *p; // 当前字符存起来
count++; // 计数+1
p++; // 指向下一个字符
}
// 来到这说明遇到空格单词存完了,或者到'\0'了
// 如果新单词比上一个单词字多,就把这个单词交给str保存
// 一样长的就不考虑了╮(╯_╰)╭
if (max < count) {
max = count;
for (int i = 0; i < count; i++) {
// str没被赋值的部分全是0,自带尾巴
str[i] = temp[i];
}
}
// 如果真的到了'\0',直接退出外循环
if (*p == '\0')
break;
p++; // 否则说明只是遇到了空格,继续指向下一个字符
}
printf("最长单词是%s,字符数:%d\n", str, max);
return 0;
}
复制代码
还有个C和OC杂交版。。
#import <Foundation/Foundation.h>
int main() {
char ch[100];
NSLog(@"输入一个字符串!!!");
scanf("%[^'\n']", ch);
// 把C字符串转为NSString的
NSString *str = [NSString stringWithUTF8String:ch];
// 用空格@" "把字符串分割放入数组
NSArray *array = [str componentsSeparatedByString:@" "];
// 假定第一个是最长的 把它变回字符串
NSString *maxStr = [NSString stringWithString:array[0]];
// 一个个变成字符串然后看谁长 最长的交给maxStr存着
// 无视第一个也被拿来比较 我不会弄。。
for (NSString *str in array) {
if (maxStr.length < str.length) {
maxStr = str;
}
}
NSLog(@"%@这货最长。。", maxStr);
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2