Problem Description
对于输入的每个字符串,查找其中的最大字母,在该字母后面插入字符串“(max)”。
Input
输入数据包括多个测试实例,每个实例由一行长度不超过100的字符串组成,字符串仅由大小写字母构成。
Output
对于每个测试实例输出一行字符串,输出的结果是插入字符串“(max)”后的结果,如果存在多个最大的字母,就在每一个最大字母后面都插入"(max)"。
Sample Input
abcdefgfedcba xxxxx
Sample Output
abcdefg(max)fedcba x(max)x(max)x(max)x(max)x(max)/* * 此题想着用arraylist来做。 * */ import java.util.ArrayList; import java.util.Scanner; public class POJ2025_MaxChar { public static void main(String[] args) { Scanner cin = new Scanner(System.in); while(cin.hasNext()) { MaxChar a = new MaxChar(cin.nextLine()); } } } class MaxChar { String str = ""; public MaxChar(String a) { str = a; MaxChar_method(str); } public void MaxChar_method(String a) { ArrayList a1 = new ArrayList();//没有指定arraylist的类型,用于存放最终结果 ArrayList<Integer> a2 = new ArrayList<Integer>();//用于存放最大元素的下标 int max = 0; a2.add(max); //查找最大的元素,如果是有多个相同的最大值,则把所有的下标插入a2list中 for(int i=1; i<a.length(); i++) { if(a.charAt(max) < a.charAt(i)) { a2.clear(); max = i; a2.add(i); } else if(a.charAt(max) == a.charAt(i)) { a2.add(i); } } //将值依次填充到a1中。最大元素后面需要填充(max)。其他的照原样填充 for(int i=0; i<a.length(); i++) { for(int j=0; j<a2.size(); j++) { if(a2.get(j) == i) { a1.add(a.charAt(i)); a1.add("(max)"); } } if (a.charAt(i) != a.charAt(max)) { a1.add(a.charAt(i)); } } //打印结果 for(int i=0; i<a1.size(); i++) { if(i != a1.size()-1) { System.out.print(a1.get(i)); } else { System.out.println(a1.get(i)); } } } }