package org.example.interview.practice;
/**
* @author xianzhe.ma
* @date 2021/11/3
*/
public class NC_100_ATOI {
public int atoi(String str) {
// write code here
str = str.trim();//去掉前后的空格
//如果为空,直接返回0
if (str.length() == 0)
return 0;
int index = 0;//遍历字符串中字符的位置
int res = 0;//最终结果
int sign = 1;//符号,1是正数,-1是负数,默认为正数
int length = str.length();
//判断符号
if (str.charAt(index) == '-' || str.charAt(index) == '+')
sign = str.charAt(index++) == '+' ? 1 : -1;
for (; index < length; ++index) {
//取出字符串中字符,然后转化为数字
int digit = str.charAt(index) - '0';
//按照题中的要求,读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。
//字符串的其余部分将被忽略。如果读取了非数字,后面的都要忽略
if (digit < 0 || digit > 9)
break;
//越界处理
if (res > Integer.MAX_VALUE / 10 || (res == Integer.MAX_VALUE / 10 && digit > Integer.MAX_VALUE % 10))
return sign == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE;
else
res = res * 10 + digit;
}
return sign * res;
}
}
package org.example.interview.practice;
/**
* @author xianzhe.ma
* @date 2021/9/3
*/
public class NC_102_lowestCommonAncestor {
public int lowestCommonAncestor (TreeNode root, int o1, int o2) {
// write code here
return helper(root, o1, o2).val;
}
private TreeNode helper(TreeNode root, int o1, int o2) {
if (root == null || root.val == o1 || root.val == o2) {
return root;
}
TreeNode left = helper(root.left, o1, o2);
TreeNode right = helper(root.right, o1, o2);
if (left == null) {
return right;
}
if (right == null) {
return left;
}
return root;
}
public static class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
}
}
package org.example.interview.practice;
/**
* @author xianzhe.ma
* @date 2021/11/7
*/
public class NC_104_COMPARE_VERSION {
public static int compare (String version1, String version2) {
// write code here
String[] array1 = version1.split("\\.");
String[] array2 = version2.split("\\.");
int len1 = array1.length;
int len2 = array2.length;
if (len1 != len2) {
if (len1 < len2) {
for (int i = 0;i) {
version1 = version1 + ".0";
}
} else {
for (int i = 0;i) {
version2 = version2 + ".0";
}
}
}
array1 = version1.split("\\.");
array2 = version2.split("\\.");
for (int i = 0;i) {
String str1 = array1[i];
String str2 = array2[i];
while (str1.startsWith("0") && str1.length() > 1) {
str1 = str1.substring(1);
}
while (str2.startsWith("0") && str2.length() > 1) {
str2 = str2.substring(1);
}
if (str1.length() != str2.length()) {
if (str1.length() < str2.length()) {
return -1;
}
else {
return 1;
}
}
//比较每一位
char[] chars1 = str1.toCharArray();
char[] chars2 = str2.toCharArray();
for (int j = 0;j) {
char char1 = chars1[j];
char char2 = chars2[j];
if (char1 != char2) {
if (char1 - '0' > char2 -'0') {
return 1;
} else {
return -1;
}
}
}
}
return 0;
}
public static void main (String[] args) {
String version1 = "134.105.202.15.33.83.60.151.38.150.82.113.141.168.7.24.78.1.80.1";
String version2 = "134.105.202.15.33.83.60.151.38.150.82.113.141.168.7.94.26.39.167.186.105.132";
System.out.println(compare(version1, version2));
}
}
package org.example.interview.practice;
/**
* @author xianzhe.ma
* @date 2021/7/24
*/
public class NC_109_ISLAND_NUM {
public int solve (char[][] grid) {
// write code here
if (grid == null || grid.length == 0) {
return 0;
}
int nr = grid.length;
int nc = grid[0].length;
int num_islands = 0;
for (int r = 0; r < nr; ++r) {
for (int c = 0; c < nc; ++c) {
if (grid[r][c] == '1' ) {
num_islands++;
dfs(grid, r, c);
}
}
}
return num_islands;
}
public void dfs(char[][] grid, int r, int c) {
int nr = grid.length;
int nc = grid[0].length;
if (r < 0 || c < 0 || r >= nr || c >= nc || grid[r][c] == '0') {
return;
}
grid[r][c] = '0';
dfs(grid, r - 1, c);
dfs(grid, r + 1, c);
dfs(grid, r, c - 1);
dfs(grid, r, c + 1);
}
}