网站建设责任分工,济南做网站设计,网站照片上传不了怎么办,wordpress 404.php大家好我是苏麟 , 今天开始带来LeetCode编程从0到1系列 . 编程基础 0 到 1 , 50 题掌握基础编程能力 大纲 1768.交替合并字符串389. 找不同28. 找出字符串中第一个匹配项的下标242. 有效的字母异位词459. 重复的子字符串283. 移动零66. 加一1822. 数组元素积的符号1502. 判断能…大家好我是苏麟 , 今天开始带来LeetCode编程从0到1系列 . 编程基础 0 到 1 , 50 题掌握基础编程能力 大纲 1768.交替合并字符串389. 找不同28. 找出字符串中第一个匹配项的下标242. 有效的字母异位词459. 重复的子字符串283. 移动零66. 加一1822. 数组元素积的符号1502. 判断能否形成等差数列896. 单调数列13. 罗马数字转整数 1768.交替合并字符串
描述 :
给你两个字符串 word1 和 word2 。请你从 word1 开始通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长就将多出来的字母追加到合并后字符串的末尾。 返回 合并后的字符串 。
题目 :
交替合并字符串
LeetCode : 交替合并字符串 代码 :
class Solution {public String mergeAlternately(String word1, String word2) {int m word1.length(), n word2.length();int i 0, j 0;StringBuilder ans new StringBuilder();while (i m || j n) {if (i m) {ans.append(word1.charAt(i));i;}if (j n) {ans.append(word2.charAt(j));j;}}return ans.toString();}
}
389. 找不同
描述 :
给定两个字符串 s 和 t 它们只包含小写字母。
字符串 t 由字符串 s 随机重排然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
题目 : LeetCode 389. 找不同 : 找不同 分析 : 这道题用位运算还是比较好做的 .
代码 :
class Solution {public char findTheDifference(String s, String t) {int n 0;int a s.length();int b t.length();for(int i 0 ;i a;i){n ^ s.charAt(i);}for(int i 0 ;i b;i){n ^ t.charAt(i);}return (char) n;}
}28. 找出字符串中第一个匹配项的下标
描述 ; 给你两个字符串 haystack 和 needle 请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标下标从 0 开始。如果 needle 不是 haystack 的一部分则返回 -1 。
題目 LeetCode : 找出字符串中第一个匹配项的下标
偷懒的代码 :
class Solution {public int strStr(String haystack, String needle) {return haystack.indexOf(needle);}
}暴力代码 :
class Solution {public int strStr(String haystack, String needle) {int n haystack.length(), m needle.length();for (int i 0; i m n; i) {boolean flag true;for (int j 0; j m; j) {if (haystack.charAt(i j) ! needle.charAt(j)) {flag false;break;}}if (flag) {return i;}}return -1;}
}
242. 有效的字母异位词
描述 :
给定两个字符串 s 和 t 编写一个函数来判断 t 是否是 s 的字母异位词。
注意若 s 和 t 中每个字符出现的次数都相同则称 s 和 t 互为字母异位词。
题目 :
LeetCode 有效的字母异位词
代码 :
class Solution {public boolean isAnagram(String s, String t) {char[] arr s.toCharArray();char[] brr t.toCharArray();Arrays.sort(arr);Arrays.sort(brr);return new String(arr).equals(new String(brr));}
}459. 重复的子字符串
描述 :
给定一个非空的字符串 s 检查是否可以通过由它的一个子串重复多次构成
题目 :
LeetCode 重复的子字符串
代码 :
class Solution {public boolean repeatedSubstringPattern(String s) {return (s s).indexOf(s,1) ! s.length();}
}283. 移动零
描述 :
给定一个数组 nums编写一个函数将所有 0 移动到数组的末尾同时保持非零元素的相对顺序。
请注意 必须在不复制数组的情况下原地对数组进行操作。
题目 :
LeetCode 移动零 分析 :
这道题双指针就解决掉了 .
代码 :
class Solution {public void moveZeroes(int[] nums) {int n nums.length;int left 0;int right 0;while(right n){if(nums[right] ! 0){swap(nums,left,right);left;}right;}Arrays.toString(nums);}public void swap(int[] arr,int a,int b){int temp arr[a];arr[a] arr[b];arr[b] temp;}
}66. 加一
描述 :
给定一个由 整数 组成的 非空 数组所表示的非负整数在该数的基础上加一。
最高位数字存放在数组的首位 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外这个整数不会以零开头。
题目 : LeetCode 加一
代码 :
class Solution {public int[] plusOne(int[] digits) {int len digits.length;for(int i len - 1;i 0 ;i--){digits[i];digits[i] % 10;if(digits[i] ! 0){return digits;}}int[] arr new int[len 1];arr[0] 1;return arr;}
}1822. 数组元素积的符号
描述 :
已知函数 signFunc(x) 将会根据 x 的正负返回特定值
如果 x 是正数返回 1 。 如果 x 是负数返回 -1 。 如果 x 是等于 0 返回 0 。 给你一个整数数组 nums 。令 product 为数组 nums 中所有元素值的乘积。
返回 signFunc(product) 。
题目 :
LeetCode 数组元素积的符号
代码 :
class Solution {public int arraySign(int[] nums) {int count 1;for(int i 0;i nums.length;i){if(nums[i] 0){return 0;}else if(nums[i] 0){count -count;}}return count;}
}1502. 判断能否形成等差数列
描述 :
给你一个数字数组 arr 。
如果一个数列中任意相邻两项的差总等于同一个常数那么这个数列就称为 等差数列
如果可以重新排列数组形成等差数列请返回 true 否则返回 false 。
题目 :
LeetCode 判断能否形成等差数列 代码 :
class Solution {public boolean canMakeArithmeticProgression(int[] arr) {Arrays.sort(arr);int n arr[1] -arr[0];for(int i 0;i arr.length - 1;i){if(arr[i 1] - arr[i] ! n){return false;} } return true;}
}896. 单调数列
描述 :
如果数组是单调递增或单调递减的那么它是 单调 的。
如果对于所有 i jnums[i] nums[j]那么数组 nums 是单调递增的。 如果对于所有 i jnums[i] nums[j]那么数组 nums 是单调递减的。
当给定的数组 nums 是单调数组时返回 true否则返回 false。
题目 :
LeetCode 单调数列 代码 :
class Solution {public boolean isMonotonic(int[] nums) {int len nums.length;return isAsc(nums,len) || isDesc(nums,len);}//升序public boolean isAsc(int[] nums,int len){for(int i 0;i len -1;i){if(nums[i] nums[i1]){return false;}}return true;}//降序public boolean isDesc(int[] nums,int len){for(int i 0;i len -1;i){if(nums[i] nums[i1]){return false;}}return true;}
}13. 罗马数字转整数
描述 :
例如 罗马数字 2 写做 II 即为两个并列的 1 。12 写做 XII 即为 X II 。 27 写做 XXVII, 即为 XX V II 。
通常情况下罗马数字中小的数字在大的数字的右边。但也存在特例例如 4 不写做 IIII而是 IV。数字 1 在数字 5 的左边所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况
I 可以放在 V (5) 和 X (10) 的左边来表示 4 和 9。 X 可以放在 L (50) 和 C (100) 的左边来表示 40 和 90。 C 可以放在 D (500) 和 M (1000) 的左边来表示 400 和 900。 给定一个罗马数字将其转换成整数。
题目 :
LeetCode 罗马数字转整数 代码 :
class Solution {public int romanToInt(String s) {ListInteger list new ArrayList();for(int i 0;i s.length();i){char temp s.charAt(i);switch(temp){case I:list.add(1);break;case V:list.add(5);break;case X:list.add(10);break;case L:list.add(50);break;case C:list.add(100);break;case D:list.add(500);break;case M:list.add(1000);break;}}int num 0;for(int i 0;i list.size();i){int a list.get(i);if(i list.size() - 1 a list.get(i 1)){num - a;}else{num a;}}return num;}
}这期就到这里 , 下期见!