I read in another thread that StringBuilder is superior to String Concatenation, especially within loops. However, I solved the problem in two different ways, and the StringBuilder method took nearly double the runtime - The logic is otherwise the same, so why might this be?
class Solution {
public int reverse(int x) {
boolean isNeg = false;
if(x < 0){
x *= -1;
isNeg = true;
}
ArrayList <Character> arrlist = new ArrayList<>();
String reverse = "";
StringBuilder sbdr = new StringBuilder();
String s = Integer.toString(x);
for(int i = 0; i < s.length(); i++) arrlist.add(s.charAt(i));
while(arrlist.get(arrlist.size()-1) == '0' && arrlist.size() > 1) {
arrlist.remove(arrlist.size()-1);
}
for(int i = arrlist.size()-1; i >= 0; i--) sbdr.append(arrlist.get(i));
try {
if(isNeg) return Integer.valueOf(sbdr.toString())*-1;
return Integer.valueOf(sbdr.toString());
} catch (Exception e){
return 0;
}
}
}
class Solution {
public int reverse(int x) {
boolean isNeg = false;
if(x < 0){
x *= -1;
isNeg = true;
}
ArrayList <Character> arrlist = new ArrayList<>();
String reverse = "";
String s = Integer.toString(x);
for(int i = 0; i < s.length(); i++) arrlist.add(s.charAt(i));
while(arrlist.get(arrlist.size()-1) == '0' && arrlist.size() > 1) {
arrlist.remove(arrlist.size()-1);
}
for(int i = arrlist.size()-1; i >= 0; i--) {
reverse += Character.toString(arrlist.get(i));
}
try {
if(isNeg) return Integer.valueOf(reverse)*-1;
else return Integer.valueOf(reverse);
} catch (Exception e){
return 0;
}
}
}