面试10大算法题汇总-字符串和数组6

11.String转int,即atoi函数实现。

主要考虑以下几种情况:

1.      String为空

2.      String中存在非数字字符,如空白字符,abcd等

3.      String的正负

Code:

public class test {
	public static int atoi(String str) {
		if (str == null || str.length() < 1)
			return 0;
		str = str.trim();

		char flag = '+';
		int i = 0;
		if (str.charAt(0) == '-' || str.charAt(0) == '+') {
			++i;
			flag = str.charAt(0);
		}

		double result = 0;

		int j = i;
		while (str.length() > j) {
			if (str.charAt(j) < '0' || str.charAt(i) > '9') {
				System.err.println("Bad Input");
				return Integer.MIN_VALUE;
			}
			++j;
		}
		while (str.length() > i && str.charAt(i) > '0' && str.charAt(i) < '9') {
			result = result * 10 + (str.charAt(i) - '0');
			++i;
		}

		if (flag == '-')
			result = -result;

		if (result > Integer.MAX_VALUE)
			return Integer.MAX_VALUE;
		if (result < Integer.MIN_VALUE)
			return Integer.MIN_VALUE;

		return (int) result;
	}

	public static void main(String[] args) {
		int i = atoi("1+2");
		int j = atoi("55");
		System.out.println("i:" + i + ",j:" + j);
	}
}

12.合并有序数组

给定两个数组A和B,将B合入A中

Code:

public void merge(int A[], int m, int B[], int n) {
	int i = m - 1;
	int j = n - 1;
	int k = m + n - 1;
 
	while (k >= 0) {
		if (j < 0 || (i >= 0 && A[i] > B[j]))
			A[k--] = A[i--];
		else
			A[k--] = B[j--];
	}
}

13.括号匹配

给定一个包含‘(‘,‘)‘, ‘{‘, ‘}‘, ‘[‘ 和 ‘]‘的字符串,判断其中各括号是否匹配

括号匹配必然需要stack,此外还需要map确定是否匹配

Code:

import java.util.HashMap;
import java.util.Stack;

public class test {
	public static boolean bValid(String s) {
		HashMap<Character, Character> map = new HashMap<Character, Character>();
		map.put('(', ')');
		map.put('[', ']');
		map.put('{', '}');

		Stack<Character> stack = new Stack<Character>();

		for (int i = 0; i < s.length(); i++) {
			char curr = s.charAt(i);

			if (map.keySet().contains(curr)) {
				stack.push(curr);
			} else if (map.values().contains(curr)) {
				if (!stack.empty() && map.get(stack.peek()) == curr) {
					stack.pop();
				} else {
					return false;
				}
			}
		}
		return stack.empty();
	}

	public static void main(String[] args) {
		System.out.println(bValid("{()}"));
	}
}


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。