题目:
分析:
由于字符串里只存在数字,五种符号和小写字母,我们可以先把句子切割成一个个单词,写一个函数来判断这个单词是否满足条件,不满足有以下几种情况:
1、出现数字
2、为空
3、符号不在最后
4、出现2个及以上的-
5、-左右没有小写字母
这边要说明一下第五点,由于我写的函数,出现数字,符号不在最后一位都会直接返回false,那么这一点需要判断的只有3种情况。1、-在单词第一位。2、-在单词最后一位。3、-在单词倒数第二位且最后一位为符号。
代码:
class Solution {
public int countValidWords(String sentence) {
String ss[]=sentence.split(" ");
int sum=0;
for(int i=0;i<ss.length;i++){
boolean b=words(ss[i]);
if(b){
sum++;
}
}
return sum;
}
public boolean words(String s){
if(s.length()==0){
return false;
}
char[] arr=s.toCharArray();
int flag=0;
for(int i=0;i<arr.length;i++){
if(arr[i]-'a'<10&&arr[i]-'a'>=0){
continue;
}
if(arr[i]-'0'<10&&arr[i]-'0'>=0){
return false;
}
switch(arr[i]){
case '-':
if(i==0||i+1==arr.length){
return false;
}
flag++;break;
case '!':
case '.':
case ',':
if(i+1!=arr.length||(i>0&&arr[i-1]=='-')){
return false;
}
break;
}
}
if(flag>1){
return false;
}else{
return true;
}
}
}