题目描述:
一群大雁往南飞,给定一个字符串记录地面上的游客听到的大雁叫声,请给出叫声最少由
几只大雁发出。具体的:
1.
大雁发出的完整叫声为
"quack"
,因为有多只大雁同一时间嘎嘎作响,所以字符串中可能
会混合多个
"quack"
。
2.
大雁会依次完整发出
"quack"
,即字符串中‘
q
’
,
’
u
’
,
’
a
’
,
’
c
’
,
’
k
’ 这
5
个
字母按顺序完整存在才能计数为一只大雁。如果不完整或者没有按顺序则不予计数。
3.
如果字符串不是由‘
q
’
,
’
u
’
,
’
a
’
,
’
c
’
,
’
k
’字符组合而成,或者没有找到一
只大雁,请返回
-1
。
输入描述:
一个字符串,包含大雁
quack
的叫声。
1 <=
字符串长度
<= 10000
字符串中的字符只有
'q', 'u', 'a', 'c', 'k'
输出描述:
大雁的数量
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String sound = sc.nextLine();
int value = count(sound);
System.out.println(value);
}
/**
* 计算
* @param str
* @return
*/
public static Integer count(String str){
String[] strs = new String[str.length()];
int n = 0;
int count = 0;
for (Character ch:str.toCharArray()) {
if(ch == 'q'){
strs[n] = "q";
n++;
}
if(ch == 'u'){
for (int i=0;i<strs.length;i++){
if("q".equals(strs[i])){
strs[i] = "qu";
break;
}
}
}
if(ch == 'a'){
for (int i=0;i<strs.length;i++){
if("qu".equals(strs[i])){
strs[i] = "qua";
break;
}
}
}
if(ch == 'c'){
for (int i=0;i<strs.length;i++){
if("qua".equals(strs[i])){
strs[i] = "quac";
break;
}
}
}
if(ch == 'k'){
for (int i=0;i<strs.length;i++){
if("quac".equals(strs[i])){
strs[i] = "quack";
count++;
break;
}
}
}
}
return count;
}