无锡兼职做网站,免费加客源,wordpress只能访问主页,网站开发实现本地注册登录344. 反转字符串
题目
编写一个函数#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。
不要给另外的数组分配额外的空间#xff0c;你必须**原地修改输入数组**、使用 O(1) 的额外空间解决这一问题。
示例 1#xff1a;
输入#xff1…344. 反转字符串
题目
编写一个函数其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。
不要给另外的数组分配额外的空间你必须**原地修改输入数组**、使用 O(1) 的额外空间解决这一问题。
示例 1
输入s [h,e,l,l,o]
输出[o,l,l,e,h]示例 2
输入s [H,a,n,n,a,h]
输出[h,a,n,n,a,H]答案
class Solution {public void reverseString(char[] s) {int left 0,right s.length - 1;while(leftright){char temp s[left];s[left] s[right];s[right] temp;left;right--;}}
}541. 反转字符串 II
题目
给定一个字符串 s 和一个整数 k从字符串开头算起每计数至 2k 个字符就反转这 2k 字符中的前 k 个字符。
如果剩余字符少于 k 个则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个则反转前 k 个字符其余字符保持原样。
示例 1
输入s abcdefg, k 2
输出bacdfeg示例 2
输入s abcd, k 2
输出bacd答案
class Solution {public String reverseStr(String s, int k) {char[] temp s.toCharArray();for(int i0;itemp.length;i2*k){int left i;int right Math.min(ik-1,temp.length-1);while(leftright){char ch temp[left];temp[left] temp[right];temp[right] ch;left;right--;}}return new String(temp);}
}替换数字
题目
给定一个字符串 s它包含小写字母和数字字符请编写一个函数将字符串中的字母字符保持不变而将每个数字字符替换为number。 例如对于输入字符串 “a1b2c3”函数应该将其转换为 “anumberbnumbercnumber”。
答案
import java.util.Scanner;public class Main{public static void main(String[] args){Scanner scanner new Scanner(System.in);String str scanner.nextLine();String res deal(str);System.out.println(res);} static String deal(String str){StringBuilder sb new StringBuilder();for(int i0;istr.length();i){if(Character.isDigit(str.charAt(i))){sb.append(number);}else{sb.append(str.charAt(i));}}return sb.toString();}
}151. 反转字符串中的单词
题目
给你一个字符串 s 请你反转字符串中 单词 的顺序。
单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。
返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。
**注意**输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中单词间应当仅用单个空格分隔且不包含任何额外的空格。
示例 1
输入s the sky is blue
输出blue is sky the示例 2
输入s hello world
输出world hello
解释反转后的字符串中不能存在前导空格和尾随空格。示例 3
输入s a good example
输出example good a
解释如果两个单词间有多余的空格反转后的字符串需要将单词间的空格减少到仅有一个。答案
class Solution {public String reverseWords(String s) {int len s.length();char[] res new char[len1];int index 0;for(int ilen-1;i0;i--){while(i0 s.charAt(i) ) i--;int right i;while(i0 s.charAt(i)! ) i--;int left i 1;while(leftright){res[index] s.charAt(left);if(leftright){res[index] ;}left;}}return new String(res,0,index-1);}
}右旋字符串
题目
字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k请编写一个函数将字符串中的后面 k 个字符移到字符串的前面实现字符串的右旋转操作。
例如对于输入字符串 “abcdefg” 和整数 2函数应该将其转换为 “fgabcde”。
答案
import java.util.Scanner;public class Main{public static void main(String[] args){Scanner scanner new Scanner(System.in);int k scanner.nextInt();String str scanner.next();String res deal(str,k);System.out.println(res);}static String deal(String str,int k){char[] temp str.toCharArray();deal(temp,0,temp.length-1);deal(temp,0,k-1);deal(temp,k,temp.length-1);return new String(temp);}static void deal(char[] temp,int start,int end){while(startend){char ch temp[start];temp[start] temp[end];temp[end] ch;start;end--;}}
}28. 找出字符串中第一个匹配项的下标
题目
给你两个字符串 haystack 和 needle 请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标下标从 0 开始。如果 needle 不是 haystack 的一部分则返回 -1 。
示例 1
输入haystack sadbutsad, needle sad
输出0
解释sad 在下标 0 和 6 处匹配。
第一个匹配项的下标是 0 所以返回 0 。示例 2
输入haystack leetcode, needle leeto
输出-1
解释leeto 没有在 leetcode 中出现所以返回 -1 。答案
class Solution {public int strStr(String haystack, String needle) {int len1 haystack.length();int len2 needle.length();if(len1len2){return -1;}for(int i0;ilen1;i){if(haystack.charAt(i)!needle.charAt(0)){continue;}for(int ji;jlen1 j-ilen2;j){if(haystack.charAt(j)!needle.charAt(j-i)){break;}if(j-i len2-1){return i;}}}return -1;}
}459. 重复的子字符串
题目
给定一个非空的字符串 s 检查是否可以通过由它的一个子串重复多次构成。
示例 1:
输入: s abab
输出: true
解释: 可由子串 ab 重复两次构成。示例 2:
输入: s aba
输出: false示例 3:
输入: s abcabcabcabc
输出: true
解释: 可由子串 abc 重复四次构成。 (或子串 abcabc 重复两次构成。)答案
class Solution {public boolean repeatedSubstringPattern(String s) {int len s.length();for(int i1;i*2len;i){if(len%i0){boolean flag true;for(int ji;jlen;j){if(s.charAt(j)!s.charAt(j-i)){flag false;break;}}if(flag){return true;}}}return false;}
}