import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
如果字符串中的’g’的相邻左边或者右边有另外一个’g’,则’g’在这个字符串中是happy的,
如果字符串中所有的’g’都是happy的则返回true,否则返回false。
*/
public class Ghappy {
public static void main(String[] args) {
String sr ="ggsdwwehappydfg";
System.out.println(method1(sr));
}
public static boolean method1(String s){
//字符串长度为1,不可能happy
if(s.length()<=1){
return false;
}
//判断第一个元素为g的情况
else if(s.charAt(0)=='g'&&s.charAt(1)!='g'){
return false;
}
//判断去掉头,尾字符后的情况,不然判断左或者右相邻的元素会提示索引越界异常
for (int i = 1; i < s.length()-1; i++) {
if(s.charAt(i)=='g'&& (s.charAt(i+1)!='g'&&s.charAt(i-1)!='g'))
return false;
//判断最后一个元素为g的情况
if(s.charAt(s.length()-1)=='g'&&s.charAt(s.length()-2)!='g'){
return false;
}
}
//如果上述判断后都没有返回false,表示字符串真的是happy了~
return true;
}
private static boolean method2(String s) {
if(!s.contains("g")){
return false;
}
String regex ="g+";
Pattern p =Pattern.compile(regex);
Matcher m=p.matcher(s);
while(m.find()){
String s1 =m.group();
if(s1.length()==1){
return false;
}
}
return true;
}
} |