试题I:字串分值
作者:互联网
试题I:字串分值
思想:我用的枚举法,对每个字符串遍历记录每个字符的出现次数,并存入数组,对数组进行 遍历,元素为1的数累加起来,则可以求出每个字符串的分值,然后两层for循环计算出一个字符串的所有字串的分值,累加求和即可。
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static int f(String s){
int count = 0 ;
int [] res = new int[26] ;
Arrays.fill(res, 0) ;
for(int j=0; j<s.length(); j++){
char c = s.charAt(j) ;
switch(c){
case 'a' : res[0] ++; break ;
case 'b' : res[1] ++; break ;
case 'c' : res[2] ++; break ;
case 'd' : res[3] ++; break ;
case 'e' : res[4] ++; break ;
case 'f' : res[5] ++; break ;
case 'g' : res[6] ++; break ;
case 'h' : res[7] ++; break ;
case 'i' : res[8] ++; break ;
case 'j' : res[9] ++; break ;
case 'k' : res[10] ++; break ;
case 'l' : res[11] ++; break ;
case 'm' : res[12] ++; break ;
case 'n' : res[13] ++; break ;
case 'o' : res[14] ++; break ;
case 'p' : res[15] ++; break ;
case 'q' : res[16] ++; break ;
case 'r' : res[17] ++; break ;
case 's' : res[18] ++; break ;
case 't' : res[19] ++; break ;
case 'u' : res[20] ++; break ;
case 'v' : res[21] ++; break ;
case 'w' : res[22] ++; break ;
case 'x' : res[23] ++; break ;
case 'y' : res[24] ++; break ;
case 'z' : res[25] ++; break ;
}
}
for(int i=0; i<res.length; i++){
if(res[i] == 1){
count ++ ;
}
}
return count ;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in) ;
String s = input.next() ;
int sum = 0 ;
for(int i=0; i<s.length(); i++){
sum ++ ;
for(int j=i+1; j<s.length(); j++){
sum += f(s.substring(i,j+1)) ;
}
}
System.out.println(sum);
}
}
标签:case,试题,++,res,sum,分值,break,int,字串 来源: https://blog.csdn.net/nuist_NJUPT/article/details/120634466