解题思路: 本题主要是涉及分割获取单词 然后按字典排序输出单词 (这个只要用qsort排序下就好了)
AC代码如下
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
// 解题思路: 将输入的数据全部转换为小写
// 从字符串中识别出单词
// 写排序算法 如果有相同的 则后面的相同字符串换成""
string word[5005];
static int wordCount =0;
void getWord(string str) {
// 查找单词 通过判断空格 和特殊符号
for (int i = 0; i< str.length(); ++i) {
int flag =0;
while (isalpha(str[i]) && i< str.length()) {
flag =1;
word[wordCount].push_back(str[i]);
++i;
}
if (flag == 1)
wordCount++;
}
}
int cmp(const void *res, const void *cmp) {
string *s1 = (string*)res;
string *s2 = (string*)cmp;
return s1->compare(*s2);
}
int main(int argc, char** argv) {
string line;
while (getline(cin, line)) {
for (int i =0; i< line.length(); ++i) {
line[i] = tolower(line[i]);
}
getWord(line);
}
// 按字典排序
qsort(word, wordCount, sizeof (string),cmp);
// 输出
for (int i =0; i< wordCount; ++i) {
if (word[i] != "")
cout<< word[i]<< endl;
}
return 0;
}