posts - 12,  comments - 7,  trackbacks - 0

/**Problem
大写字母A-Z分别对应整数[-13,12],因此,一个字符串对应了一个整数列。我们把字符串对应的整数列的和称为该字符串的特性值。例如:字符串ACM对应的整数列为{-13,-11,-1},则ACM的特性值为(-13)+(-11)+(-1)=-25;其子串AC的特性值为-24;子串M的特性值为-1。

给你一个字符串,请找出该字符串的所有子串的最大特性值。

Input
第一行的正整数 N(1<=N<=1000)表示其后有N组测试数据,每组测试数据都由一个字符串组成。字符串只能由大写字母A-Z组成,且字符串的长度不会超过1000。

Output
输出有N行,每行是一组测试数据的输出结果。
*/
       

  1import java.util.*;
  2import java.io.*;
  3
  4public class StringTraitNumberTest
  5{
  6    public static void main(String[] args)throws IOException
  7    {
  8        System.out.print("Please enter a number:");
  9        BufferedReader inn = new BufferedReader(new InputStreamReader(System.in));
 10        int n = Integer.parseInt(inn.readLine());
 11
 12        System.out.println("Please enter "+n+" groups up char line:");
 13        Scanner in = new Scanner(System.in);
 14        StringTraitNumber stn = new StringTraitNumber(n);
 15        int j = 0;
 16        while(true)
 17        {
 18            
 19            String k = in.nextLine();
 20            stn.startSeek(k,j);
 21            j++;
 22            if(j >= n)
 23                break;
 24        }

 25        stn.print();
 26    }

 27}

 28
 29class StringTraitNumber
 30{
 31    public StringTraitNumber(int n)
 32    {
 33        size = n;
 34        sum = new int[size];
 35    }

 36
 37    public void startSeek(String k,int j)
 38    {
 39        boolean tag = false;
 40        int max = Integer.MIN_VALUE;
 41        for(int i = 0;i < k.length();i++)
 42        {
 43            if((int)k.charAt(i) > 77)
 44            {
 45                tag = true;
 46                break;
 47            }

 48            if(max < (int)k.charAt(i))
 49                max = (int)k.charAt(i);
 50        }

 51        if(!tag)
 52        {
 53            switch(max)
 54            {
 55            case 'A':
 56                sum[j] += -13;
 57                break;
 58            case 'B':
 59                sum[j] += -12;
 60                break;
 61            case 'C':
 62                sum[j] += -11;
 63                break;
 64            case 'D':
 65                sum[j] += -10;
 66                break;
 67            case 'E':
 68                sum[j] += -9;
 69                break;
 70            case 'F':
 71                sum[j] += -8;
 72                break;
 73            case 'G':
 74                sum[j] += -7;
 75                break;
 76            case 'H':
 77                sum[j] += -6;
 78                break;
 79            case 'I':
 80                sum[j] += -5;
 81                break;
 82            case 'J':
 83                sum[j] += -4;
 84                break;
 85            case 'K':
 86                sum[j] += -3;
 87                break;
 88            case 'L':
 89                sum[j] += -2;
 90                break;
 91            case 'M':
 92                sum[j] += -1;
 93                break;
 94            default:
 95                sum[j] += 0;
 96                break;
 97            }

 98        }

 99        else
100            for(int i = 0;i < k.length();i++)
101            {
102                switch(k.charAt(i))
103                {
104                case 'N':
105                    sum[j] += 0;
106                    break;
107                case 'O':
108                    sum[j] += 1;
109                    break;
110                case 'P':
111                    sum[j] += 2;
112                    break;
113                case 'Q':
114                    sum[j] += 3;
115                    break;
116                case 'R':
117                    sum[j] += 4;
118                    break;
119                case 'S':
120                    sum[j] += 5;
121                    break;
122                case 'T':
123                    sum[j] += 6;
124                    break;
125                case 'U':
126                    sum[j] += 7;
127                    break;
128                case 'V':
129                    sum[j] += 8;
130                    break;
131                case 'W':
132                    sum[j] += 9;
133                    break;
134                case 'X':
135                    sum[j] += 10;
136                    break;
137                case 'Y':
138                    sum[j] += 11;
139                    break;
140                case 'Z':
141                    sum[j] += 12;
142                    break;
143                default:
144                    sum[j] += 0;
145                    break;
146                }

147            }

148    }

149
150    public void print()
151    {
152        System.out.println("The answer is:");
153        for(int i = 0;i < size;i++)
154            System.out.println(sum[i]);
155    }

156
157    private int[] sum;
158    private int size;
159}
posted on 2007-12-22 18:15 Jun Woo 阅读(675) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 
<2007年12月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

爱好者!边学边练,勇往直前!大家精诚合作,一起进步,由成为.以后好吃好耍好

常用链接

留言簿(1)

随笔档案

相册

搜索

  •  

积分与排名

  • 积分 - 10407
  • 排名 - 2341

最新评论

阅读排行榜

评论排行榜