不使用乘号,除号和取模符号将两数相除。
如果溢出返回 MAX_INT。
模拟
class Solution {
public int divide(int dividendInt, int divisorInt) {
Long dividend = Long.valueOf(dividendInt) ;
Long divisor = Long.valueOf(divisorInt) ;
if(divisor == 0){
return Integer.MAX_VALUE ;
}
boolean neg = false ;
if(dividend < 0 && divisor > 0){
neg = true ;
}
else if(dividend > 0 && divisor < 0){
neg = true ;
}
dividend = Math.abs(dividend) ;
divisor = Math.abs(divisor) ;
String bigStr = String.valueOf(dividend) ;
String lessStr = String.valueOf(divisor) ;
int bigLen = bigStr.length() ;
int lessLen = lessStr.length() ;
if(bigLen < lessLen){
return 0 ;
}
String answer = "" ;
String father = bigStr.substring(0 , lessLen-1) ;
for(int i = lessLen-1 ;i < bigLen ; i++){
String curStr = String.format("%s%c" , father , bigStr.charAt(i)) ;
long cur = Long.valueOf(curStr) ;
int curBit = 0 ;
while (cur >= divisor){
cur -= divisor ;
curBit++ ;
}
answer = String.format("%s%d" , answer , curBit) ;
if(cur > 0){
father = String.valueOf(cur) ;
}
else {
father = "" ;
}
}
while (answer.length() > 0 && answer.charAt(0) == '0'){
answer = answer.substring(1) ;
}
long answerLong = "".equals(answer) ? 0 : Long.valueOf(answer) ;
if(neg){
answerLong = -answerLong ;
}
if(answerLong < Integer.MIN_VALUE || answerLong > Integer.MAX_VALUE){
return Integer.MAX_VALUE ;
};
return (int)answerLong ;
}
}