小米oj—字串拼顏值
阿新 • • 發佈:2018-11-09
描述
現在是拼顏值的時代。 字串也是如此,如果相鄰字元相同出現次數越多 (即 s[i] == s[i + 1] ),那麼字串越醜,反之,顏值就越高。 我們定義字串的醜陋度計算方法:如果對於兩個相鄰字元相等,加1分。否則不加分。 現在有一個由 a, b 和 ? 組成的字串,計算醜陋度前需要先將字串中的所有 ? 替換成 a 或 b。請輸出能得到最低的字串醜陋度。
舉例: ?? 可表示為 ab,最低得分為0 a?a 可表示 aba,最低得分為0 abaa ,有一處相鄰相等,最低得分為1
注意:最終分數越高表示字串越醜陋
輸入
由a, b, ?組成的字串,長度為1 ~ 50
輸出
字串能得到醜陋分數的最低值
輸入樣例
??
a?a
abaa
複製樣例
輸出樣例
0
0
1
此處應該考慮到三種情況:
1.“?”在字串的首部:對顏值沒有任何影響
2.在字串的中間:“?”個數的奇偶數和“?”兩邊的字母是否相同相關
3.在字串的尾部,與字串的顏值沒有任何關係
至此再加上各個字母的比較,即可成功的解決問題
private static String solution(String line) { int temp =0,num =0; char []a = new char[line.length()]; for(int i= 0;i<line.length();i++) { a[i] = line.charAt(i); } int i =0; while(i<=a.length-1) {temp =0; if(a[i] =='?') {temp =i; while(temp<=a.length-1&&a[temp]=='?') { temp++; } if(i ==0) { i=(temp+1); } else if((temp-1)!=a.length-1) { int jiou = temp-i; if(a[i-1]==a[temp]) { if(jiou%2==1) { i=temp+1; } else { num++; i = temp+1; } } else {if(jiou%2==1) { num++; i = temp+1; } else { i =temp+1; } } } else{ i = temp; } } else { if(i==0) { i++; } else { if(a[i]==a[i-1]) {num++; i++; } else { i++; } } } } return String.valueOf(num); }