class Solution {
public:
int countValidWords(string sentence) {
vector<string> tokens = split(sentence);
int ans=0;
for (string item:tokens){
bool flag = false;
int cnt_ = 0; // -的个数
int cntb = 0; // 标点的个数
for (int i=0; i<item.length(); i++){
if (item[i]=='!' || item[i]=='.' || item[i]==','){
if (i!=item.length()-1){
flag = true;
break;
}
cntb +=1;
}
else if (isdigit(item[i])){
flag = true;
break;
}
else if (item[i]=='-'){
if (i==0 || i==item.length()-1 || (!isalpha(item[i-1])) || (!isalpha(item[i+1]))){
flag = true;
break;
}
cnt_ +=1;
}
}
if (flag){
continue;
}
else if (cnt_>1 || cntb>1){
continue;
}
cout<<item<<" ";
ans +=1;
}
return ans;
}
vector<string> split(string astr){
istringstream ass(astr);
string out;
vector<string> ans;
while (ass>>out){
ans.push_back(out);
}
return ans;
}
};