算法中的调试步骤开发思路在其他领域能广泛运用吗?比如ML
package com.patience.interview.huawei;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class MergeStrAndSortAndTransform {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
String [] lines = line.split("\\s");
String mergeStr = lines[0].concat(lines[1]);
System.err.println(mergeStr);
List<String> evens = new ArrayList<>();
List<String> odds = new ArrayList<>();
for(int i = 1; i <= mergeStr.length(); i++){
if(i % 2 == 0){
evens.add(mergeStr.charAt(i - 1)+"");
}
if(i % 2 == 1){
odds.add(mergeStr.charAt(i - 1)+"");
}
}
System.err.println(evens.toString());
System.err.println(odds.toString());
Collections.sort(evens);
Collections.sort(odds);
System.err.println(evens.toString());
System.err.println(odds.toString());
StringBuffer afterMergeStr = new StringBuffer();
int len = ((evens.size() + odds.size()) >> 1) + 1;
int i = 0;
while(i < len){
if(i < odds.size()){
afterMergeStr.append(odds.get(i));
}
if(i < evens.size()){
afterMergeStr.append(evens.get(i));
}
i++;
}
System.err.println(afterMergeStr);
StringBuffer result = new StringBuffer();
for(char c : afterMergeStr.toString().toCharArray()){
if(c >= 'A' && c <= 'F' ||
c >= 'a' && c <= 'f' ||
c >= '0' && c <= '9'){
String s = c + "";
String hex = Integer.valueOf(s,16).toString();
System.err.println(hex);
String bin = Integer.toBinaryString(Integer.valueOf(hex));
if(bin.length() < 8){
int seg = 4 - bin.length();
String s1 = new String();
while(seg > 0){
s1 += "0";
seg--;
}
bin = s1 + bin;
}
System.err.println(bin);
StringBuffer binStr = new StringBuffer();
int bin_len = bin.length() - 1;
while(bin_len >= 0){
binStr.append(bin.charAt(bin_len--));
}
System.err.println(binStr.toString());
int num = Integer.parseUnsignedInt(binStr.toString(),2);
System.err.println(num);
String r = Integer.toHexString(num);
result.append(r.toUpperCase());
}else{
result.append(c);
}
}
System.out.println(result.toString());
}
}