其他分享
首页 > 其他分享> > 试题I:字串分值

试题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