今天去人人面试,被问到怎样把一个字符串,如“123”转换为int类型,我当时没有写出来,只写了一半,没有想到怎么拼接各个分散字符。面试出来后,在地铁中,想到怎么拼接了,方法如下:
public static int stringTOInt(String str)
{
char[] arr = str.toCharArray();
int len = arr.length;
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < len; i++)
{
if (arr[i] >= 48 && arr[i] <= 58)
{
list.add(arr[i] - '0');
}
}
int sum = 0;
int listSize = list.size();
for (int i = 0; i < listSize; i++)
{
sum += Math.pow(10, listSize - i - 1) * list.get(i);
}
return sum;
}
思路:
1、先把字符串转换为字符数组
2、判断是否为数字,如果为数字,则数字字符减去0,为原来真正的数字,最后把想减后的结果添加至数据结构List集合中;0~9分别对应unicode中48-58数字
3、由于List是有序的,故“123”中1为百位,则需要乘以100,2为十位,则需要乘以10,3为个位,则不动,可以直接使用Math.pow()中方法,再乘以各个集合元素,累加至sum中