預備知識:
- 1java.lang.String.charAt()方法
返回 指定索引 處的 char值。索引範圍 是從0 到length() - 1。
源碼:
public char charAt(int index) {
if ((index < 0) || (index >= value.length)) {
throw new StringIndexOutOfBoundsException(index);
}
return value[index];
}
參數index 這是該數的char值第一個char的索引爲0.。
如果index參數爲負或不小於該字符串的長度會報異常IndexOutOfBoundsException ,這是個越界異常
package se.SE.practice;
class CharAt{
public static void main(String[] args) {
String str="Say something I am giving up on you";
System.out.println(str.charAt(0));
System.out.println(str.charAt(1));
System.out.println(str.charAt(16));
}
}
輸出:
- 2 toString()
a.當需要將一個對象輸出到顯示器時,通常要調用他的toString()方法,將對象的內容轉換爲字符串.java中的所有類默認都有一個toString()方法
b.本身返回的是 getClass().getName() + "@" +Integer.toHexString(hashCode());也就是 類名 + @ +hashCode的值
注意事項:
1.必須被聲明爲public
2.返回類型爲String
3.方法的名稱必須爲toString,且無參數
4.方法體中不要使用輸出方法System.out.println()
1題目來源:
https://www.nowcoder.com/questionTerminal/9d1559511b3849deaa71b576fa7009dc
2題目描述:
迴文串”是一個正讀和反讀都一樣的字符串,比如“level”或者“noon”等等就是迴文串。花花非常喜歡這種擁有對稱美的迴文串,生日的時候她得到兩個禮物分別是字符串A和字符串B。現在她非常好奇有沒有辦法將字符串B插入字符串A使產生的字符串是一個迴文串。你接受花花的請求,幫助她尋找有多少種插入辦法可以使新串是一個迴文串。如果字符串B插入的位置不同就考慮爲不一樣的辦法。
例如:
A = “aba”,B = “b”。這裏有4種把B插入A的辦法:
* 在A的第一個字母之前: "baba" 不是迴文
* 在第一個字母‘a’之後: "abba" 是迴文
* 在字母‘b’之後: "abba" 是迴文
* 在第二個字母'a'之後 "abab" 不是迴文
所以滿足條件的答案爲2
3分析:
a.判斷迴文
只需要定義兩個引用,第一個引用從前向後遍歷,第二個引用從後向前遍歷,如果兩個遍歷的字符相等就是迴文字符串,否則就不是迴文字符串
public static boolean isHuiwen(String s){
int i=0;
int j=s.length()-1;
while (i<j){
if(s.charAt(i)!=s.charAt(j)){
return false;
}
i++;
j--;
}
return true;
}
b.插入迴文
在從第一個字符串的第一個字符開始遍歷,嘗試插入直到判斷迴文的方法返回true,此位置就是插入位置
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str1 = sc.nextLine();
String str2 = sc.nextLine();
int count = 0;
for (int i = 0; i <= str1.length(); i++) {
StringBuilder sb = new StringBuilder(str1);
sb.insert(i, str2);
if (isHuiwen(sb.toString())) {
count++;
}
}
System.out.println(count);
}
完整代碼:
import java.util.*;
public class Main {
public static boolean isHuiwen(String s){
int i = 0;
int j = s.length()-1;
while(i<j){
if(s.charAt(i)!=s.charAt(j)){
return false;
}
i++;
j--;
}
return true;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str1 = sc.nextLine();
String str2 = sc.nextLine();
int count = 0;
for(int i = 0; i <= str1.length();i++){
StringBuilder sb = new StringBuilder(str1);
sb.insert(i, str2);
if(isHuiwen(sb.toString())){
count++;
}
}
System.out.println(count);
}
測試: