图片网站如何做百度排名,网站域名迁移公告,西安医疗网站制作,咨询公司成本费用包括哪些内容以下解题思路来自代码随想录以及官方题解。 文章目录 344.反转字符串541.反转字符串||151.反转字符串中的单词28.找出字符串中第一个匹配项的下标459.重复的字符串 344.反转字符串
编写一个函数#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给…以下解题思路来自代码随想录以及官方题解。 文章目录 344.反转字符串541.反转字符串||151.反转字符串中的单词28.找出字符串中第一个匹配项的下标459.重复的字符串 344.反转字符串
编写一个函数其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
输入s [h,e,l,l,o]
输出[o,l,l,e,h]输入s [H,a,n,n,a,h]
输出[h,a,n,n,a,H]这道题很简单没什么难度。
class Solution {public void reverseString(char[] s) {int left 0;int right s.length - 1;while (left right) {char temp s[left];s[left] s[right];s[right] temp;left;right--;}}
}541.反转字符串||
给定一个字符串 s 和一个整数 k从字符串开头算起, 每计数至 2k 个字符就反转这 2k 个字符中的前 k 个字符。
如果剩余字符少于 k 个则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个则反转前 k 个字符其余字符保持原样。
输入s abcdefg, k 2
输出bacdfeg输入s abcd, k 2
输出bacdclass Solution {public String reverseStr(String s, int k) {char[] ch s.toCharArray();for (int i 0; i ch.length; i i 2 * k) {// 如果剩余字符小于 2k 但大于或等于 k 个则反转前 k 个字符其余字符保持原样。if (i k ch.length) {reverse(ch, i, i k - 1);continue;}// 如果剩余字符少于 k 个则将剩余字符全部反转。reverse(ch, i, ch.length - i);}return new String(ch);}public void reverse(char[] ch, int start, int end) {while (start end) {char temp ch[start];ch[start] ch[end];ch[end] temp;start;end--;}}}151.反转字符串中的单词
给你一个字符串 s 请你反转字符串中 单词 的顺序。 单词是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的单词分隔开。 返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。 注意输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中单词间应当仅用单个空格分隔且不包含任何额外的空格。
输入s the sky is blue
输出blue is sky the输入s hello world
输出world hello
解释反转后的字符串中不能存在前导空格和尾随空格。输入s a good example
输出example good a
解释如果两个单词间有多余的空格反转后的字符串需要将单词间的空格减少到仅有一个。以下是力扣官方题解
class Solution {public String reverseWords(String s) {// 除去开头和末尾的空白字符s s.trim();// 正则匹配连续的空白字符作为分隔符分割ListString wordList Arrays.asList(s.split(\\s));Collections.reverse(wordList);return String.join( , wordList);}
}28.找出字符串中第一个匹配项的下标
给你两个字符串 haystack 和 needle 请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标下标从 0 开始。如果 needle 不是 haystack 的一部分则返回 -1 。
输入haystack sadbutsad, needle sad
输出0
解释sad 在下标 0 和 6 处匹配。
第一个匹配项的下标是 0 所以返回 0 。输入haystack leetcode, needle leeto
输出-1
解释leeto 没有在 leetcode 中出现所以返回 -1 。我自己的解法
class Solution {public int strStr(String haystack, String needle) {if (haystack.length() needle.length()) {return -1;}int len needle.length();int i 0;while (i len haystack.length()) {if (haystack.substring(i, i len).equals(needle)) {return i;}i;}return -1;}
}官方的暴力解法
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;}
}459.重复的字符串
给定一个非空的字符串 s 检查是否可以通过由它的一个子串重复多次构成。
输入: s abab
输出: true
解释: 可由子串 ab 重复两次构成。输入: s aba
输出: false输入: s abcabcabcabc
输出: true
解释: 可由子串 abc 重复四次构成。 (或子串 abcabc 重复两次构成。)解题思路我们重复的拼接然后截取字符串长度看是否包含自身字符串。
class Solution {public boolean repeatedSubstringPattern(String s) {String str s s;return str.substring(1, str.length() - 1).contains(s);}
}