输入一组字符串,将该字符串每个字符与'U'之差的绝对值的升序排序。在线等!!?
每个字符都减去同一个字符跟不减不一样么?没有必要啊。直接排序即可。
首先,按照我的一贯观点,这种问题和编程语言无关,和编程语言无关,和编程语言无关。
重要的事情说三遍!
设计重点:
1.与U的差值存储;
2.升序排序。
已知的排序算法相当多,不过在本问题情形下,需要稍作变通。
给出一个简单方案吧:
给定字符串Char[];
比较差值,存储差值数据到deta[i];
*对deta数组排序(比较deta,但是对Char进行移动);
按序输出。
public static void main(String[] args)
{
System.out.println("Hello World!");
String s = "ABKPWUdajiewaYOWBWQYX";
Character[] array = new Character[s.length()];
for(int i = 0; i < s.length(); i ++){
array[i] = s.charAt(i);
}
Arrays.sort(array,new myComparator());
System.out.println(Arrays.toString(array));
}
public static class myComparator implements Comparator<Character>
{
@Override
public int compare(Character e1, Character e2){
int a = Math.abs(e1 - new Character('U'));
int b = Math.abs(e2 - new Character('U'));
System.out.println("a:" + a + "b:" + b);
if(a > b){
return 1;
}else if(a < b){
return -1;
}else{
return 0;
}
}
}