/**Problem
大寫字母A-Z分別對應整數(shù)[-13,12],因此,一個字符串對應了一個整數(shù)列。我們把字符串對應的整數(shù)列的和稱為該字符串的特性值。例如:字符串ACM對應的整數(shù)列為{-13,-11,-1},則ACM的特性值為(-13)+(-11)+(-1)=-25;其子串AC的特性值為-24;子串M的特性值為-1。
給你一個字符串,請找出該字符串的所有子串的最大特性值。
Input
第一行的正整數(shù) N(1<=N<=1000)表示其后有N組測試數(shù)據(jù),每組測試數(shù)據(jù)都由一個字符串組成。字符串只能由大寫字母A-Z組成,且字符串的長度不會超過1000。
Output
輸出有N行,每行是一組測試數(shù)據(jù)的輸出結果。
*/
1
import java.util.*;
2
import java.io.*;
3
4
public 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
29
class 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
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159
