public String addLetter(char letter, int position, char[] Word){
char[]newWord = new char[Word.length+1];
if(position == 0){
for(int i = position+1; i<Word.length+1; i++){
newWord[i] = Word[i-1];
}
newWord[position] = letter;
}else{
}
return new String(newWord);
}
文字列に文字を追加し、それを返すメソッドを作成しようとしています。これまでのところ、文字列の前に文字を追加することができましたが、途中/最後でそれを行う方法がよくわかりません。 if条件の内部では、すべての文字を1スロット後ろに押しているので、前に新しい文字を入れる余地があります。しかし、途中で何かを追加する場合はどうすればよいかわかりません。
あなたは以下のようなものを作ることができます:
Char配列を文字列に変換します
String b = new String("Tutorial");
次にStringBuilderを作成します
StringBuilder str = new StringBuilder(b);
System.out.println("string = " + str);
// insert character at offset 8
str.insert(8, 's');
// print StringBuilder after insertion
System.out.print("After insertion = ");
System.out.println(str.toString());// this will print Tutorials
あなたもこのように行くことができます:
public String addLetter(char letter, int position, char[] Word) {
return new StringBuilder(new String(Word)).insert(position, letter).toString();
}
1つのループ、O(n)複雑さ
public String addLetter(char letter, int position, char[] Word){
char[]newWord = new char[Word.length+1];
int offset = 0;
for(int i=0; i<newWord.length; i++) {
if(position == i) {
newWord[i] = letter;
offset = 1;
} else {
newWord[i] = Word[i-offset];
}
}
return new String(newWord);
}
private static String insertChar(String Word, char letter, int position) {
char[] chars = Word.toCharArray();
char[] newchars = new char[Word.length() + 1];
for (int i = 0; i < Word.length(); i++) {
if (i < position)
newchars[i] = chars[i];
else
newchars[i + 1] = chars[i];
}
newchars[position] = letter;
return new String(newchars);
}
あなたは文字列操作APIなしで行シフトとしてこれを行うことができます
public String addLetter(char letter, int position, char[] Word) {
char[] newWord = new char[Word.length + 1];
int i;
for (i = Word.length; i >= position; i--) {
newWord[i] = Word[i-1];
}
newWord[i] = letter;
while(i>0){
newWord[--i] = Word[i];
}
return new String(newWord);
}
あなたはこのようなことをすることができます:
string = string.substring(0,x) + "c" + string.substring(x, string.length());
最も簡単な方法は、2つのループを使用することです。
char[] newWord = new char[Word.length + 1];
for(int i = 0; i < position; i++) newWord[i] = Word[i];
newWord[position] = letter;
for(int i = position + 1; i < newWord.length; i++) newWord[i] = Word[i - 1];
return new String(newWord);
String.substring(int startindex、int end)メソッドの使用についてはどうですか?
それはこのようなものでなければなりません
public static String addLetter(char letter, int position, String Word){
String toSupport = "";
if(position == 0){
toSupport += letter +Word;
} else {
String temp = Word.substring(0, position+1);
toSupport += temp + Character.toString(letter) + Word.substring(position+1, Word.length());
}
return toSupport;
}
public static void main(String[] args) {
System.out.println(addLetter('a', 1, "hello"));
}