String 方法:
1、char charAt(int index)
charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1
2、boolean equals(Object anObject)
String 类中重写了 equals() 方法用于比较两个字符串的内容是否相等
3、int indexOf(String str)
返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
4、int lastIndexOf(String str):
返回指定子字符串在此字符串中最右边出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
5、int length()
返回字符串长度
6、String replace(char searchChar, char newChar)
通过用 newChar 字符替换字符串中出现的所有 searchChar 字符,并返回替换后的新字符串。
7、String[] split(String regex)
根据匹配给定的正则表达式来拆分字符串。
注:. 、 $、 | 和 * 等转义字符,必须得加 \
8、boolean startsWith(String prefix)
检测字符串是否以指定的前缀开始
9、String substring(int beginIndex)
返回字符串的子字符串,beginIndex -- 起始索引, 索引从 0 开始
10、char[] toCharArray()
将字符串转换为字符数组
11、boolean contains(String str)
判断字符串中是否包含指定的字符或字符串
12、boolean isEmpty()
用于判断字符串是否为空
相关算法题:
1、shift挪动
一次shift操作就是把一个单词的第一个挪到最后,单词有n位就最多挪n次,问可以和原单词相同几次。
如输入:byebye 输出:2
输入:abcd 输出:1
public class Test3 extends Thread implements Runnable { public static void main(String args[]) { int count = shiftCount("byebye"); System.out.println(count); } public static int shiftCount(String str) { int aLength = str.length(); if (aLength == 0) { return 0; } int count = 0; String cur = ""; for (int i = 1; i <= aLength; i++) { cur = str.substring(i) + str.substring(0,i); if (cur.equals(str)) { count++; } System.out.println(cur); } return count; } }
解析:
1、判断字符串为空的情况
2、创建一个字符串用于比对
3、使用substring方法截取字符串,判断字符串相同
2、回文排列
给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。
回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。
回文串不一定是字典当中的单词。
示例:
输入:"tactcoa" 输出:true(排列有"tacocat"、"atcocta",等等)
class Solution { public boolean canPermutePalindrome(String s) { Set<Character> set = new HashSet<>(); for (char ch : s.toCharArray()) { //set的add方法如果返回false,表示已经有了, //我们就把他删除 if (!set.add(ch)) { set.remove(ch); } } //最后判断set的长度是否小于等于1,如果等于1说明 //只有一个字符的个数是奇数,其他的都是偶数。如果 //等于0说明每个字符都是偶数,否则不可能构成回文字符串 return set.size() <= 1; } }
解析:
回文字符串有两种,一种是奇数的,类似于"abbba",一种是偶数的,类似于"abba"或者"aabbaa"。
偶数的我们好判断,只需要找出每个字符都是偶数就行了。但奇数的就不能使用这种方式了,其实仔细观察我们就能发现,如果是奇数的,那么字符串的所有字符中只有一个字符的个数是奇数,其他的都是偶数