3 回答
TA貢獻1785條經驗 獲得超8個贊
你的問題基本上可以歸結為弄清楚字符串中有多少個字符完整地填充了給定的條件,有多少字符沒有。
有兩種方法可以做到這一點:
1)簡單地計算字符:
int numPositiveChars = 0;
int numNegativeChars = 0;
for (int i = 0; i < s.length(); i++){
char c = s.charAt(i);
if (/*check c here*/)
numPositiveChars++;
else
numNegativeChars++;
}
實際上,您甚至不需要計算負字符,因為該值只是。s.length() - numPositiveChars
2)另一種方法是使用正則表達式,例如通過刪除所有非數字字符,然后獲取字符計數:
int numPositiveChars = s.replaceAll("[^0-9]+", "").length();
此行將從 String 中刪除所有非數字字符(不是 0-9),然后返回結果的長度(數字字符數)。
一旦你有了符合你條件的字符數,計算百分比就變得微不足道了。
TA貢獻1869條經驗 獲得超4個贊
您只需要替換每個元素中的所有非數字,然后像這樣比較長度:
public static List<String> returnSentence(String[] str) {
int nrOfWords = str.length;
List<String> result = new ArrayList<>();
for (int i = 0; i < nrOfWords; i++) {
if(str[i].replaceAll("\\D", "").length() == str[i].length() * 0.25){
result.add(str[i]);
}
}
return result; // If you want an array use : return result.toArray(String[]::new);
}
我也會使用List而不是數組作為結果,因為你不知道有多少元素是尊重條件的。
如果你想用流媒體解決,它可以更容易:
public static String[] returnSentence(String[] str) {
return Arrays.stream(str)
.filter(s-> s.replaceAll("\\D", "").length() == s.length() * 0.25)
.toArray(String[]::new);
}
TA貢獻1836條經驗 獲得超5個贊
像這樣的東西
public static String[] returnSentence(String[] str){
int nrOfWords= str.length;
String[] temp_Str = new String[20];
int count = 0;
int k=0;
for(int i = 0;i<nrOfWords;i++){
for(int j = 0;j<str[i].length;j++){
if(Character.isAlphabetic(str[i].getcharat(j)))
{
count++;
}
if((count/100.0)*100>=25)
{ temp_Str[k]=str[i];
k++;
}
}
}
}
添加回答
舉報
