这是利用了双指针算法一个思想,原先的暴力算法要n²,这里优化到n
#include<iostream>
#include<string.h>
using namespace std;
int main(){
char str[1000];
gets(str);
int n=strlen(str);
for(int i=0;i<n;i++){//i遍历整个字符串长度
int j=i;//j从每个单词的首字母开始
while(j<n&&str[j]!=' '){//while限制j不能超过字符串长度也不能到达空格
j++;
}
for(int k=i;k<j;k++){
cout<<str[k];
}
cout<<endl;
i=j;//i从j开始,从空格开始,i++后就从下一个字符的第一个字母开始
}
}
为什么j到空格就会停止,因为当j到一个空格时,进入不了while循环了,一个简单的方法可以记住这些规律,括号内没有等于号的都是当前中止的情况