斗鱼2021校招:字符串减法Java解
/**
* @ Created with IntelliJ IDEA.
* @ClassName Demo
* @Description
* @Author by小房
* @Date 2020/8/8 21:11
*/
public class Demo {
public static void main(String[] args) {
System.out.println(helper("12345689", "789"));
}
public static String helper(String num1, String num2) {
while(num1.length() < num2.length()) {
num1 = "0" + num1; //预处理成等长字符串
}
while(num2.length() < num1.length()) {
num2 = "0" + num2; //预处理成等长字符串
}
StringBuilder s1 = new StringBuilder(num1);
StringBuilder s2 = new StringBuilder(num2); //反过来0下标对应个位
StringBuilder r = new StringBuilder();
int flag =0; //用flag标记借位
for(int i = s1.length()-1; i >= 0; --i) {
int sum = f(s1.charAt(i)) - flag - f(s2.charAt(i));
flag = 0;
r.append((sum+10)%10);
if (sum < 0){
flag = 1;
}
}
String str = r.reverse().toString();
int len = str.length();
int index = 0;
while( index < len && str.charAt(index) == '0' ) {
index++;
}
if (index == len) {
return "0";
}else {
return str.substring(index, len);
}
}
public static int f(char c) { return c - '0';} //字符变数字
}
#斗鱼##笔试题目#