毎日練習22——Javaアルファベットの大文字と小文字の交換(8 kyu)
3283 ワード
タイトル
toAlternangCaseメソッドを定義し、各小文字を大文字に、各大文字を小文字に変更します.例:
いつものように、あなたの方法は元の文字列を変異させません.
テスト例:
問題を解く
私の愚かな方法:
他の人:
考える
他の人のコードを見て、公式ライブラリ関数/メソッドの蓄積が足りず、charパッケージクラスにはこのような良いメソッドisUpperCase()があります.
toAlternangCaseメソッドを定義し、各小文字を大文字に、各大文字を小文字に変更します.例:
StringUtils.toAlternativeString("hello world") == "HELLO WORLD"
StringUtils.toAlternativeString("HELLO WORLD") == "hello world"
StringUtils.toAlternativeString("hello WORLD") == "HELLO world"
StringUtils.toAlternativeString("HeLLo WoRLD") == "hEllO wOrld"
StringUtils.toAlternativeString("12345") == "12345" // Non-alphabetical characters are unaffected
StringUtils.toAlternativeString("1a2b3c4d5e") == "1A2B3C4D5E"
StringUtils.toAlternativeString("StringUtils.toAlternatingCase") == "sTRINGuTILS.TOaLTERNATINGcASE"
いつものように、あなたの方法は元の文字列を変異させません.
テスト例:
import org.junit.Test;
import static org.junit.Assert.*;
public class StringUtilsTest {
@Test
public void fixedTests() {
assertEquals("HELLO WORLD", StringUtils.toAlternativeString("hello world"));
assertEquals("hello world", StringUtils.toAlternativeString("HELLO WORLD"));
assertEquals("HELLO world", StringUtils.toAlternativeString("hello WORLD"));
assertEquals("hEllO wOrld", StringUtils.toAlternativeString("HeLLo WoRLD"));
assertEquals("Hello World", StringUtils.toAlternativeString(StringUtils.toAlternativeString("Hello World")));
assertEquals("12345", StringUtils.toAlternativeString("12345"));
assertEquals("1A2B3C4D5E", StringUtils.toAlternativeString("1a2b3c4d5e"));
assertEquals("sTRINGuTILS.TOaLTERNATINGcASE", StringUtils.toAlternativeString("StringUtils.toAlternatingCase"));
}
@Test
public void kataTitleTests() {
assertEquals("ALTerNAtiNG CaSe", StringUtils.toAlternativeString("altERnaTIng cAsE"));
assertEquals("altERnaTIng cAsE", StringUtils.toAlternativeString("ALTerNAtiNG CaSe"));
assertEquals("ALTerNAtiNG CaSe <=> altERnaTIng cAsE", StringUtils.toAlternativeString("altERnaTIng cAsE <=> ALTerNAtiNG CaSe"));
assertEquals("altERnaTIng cAsE <=> ALTerNAtiNG CaSe", StringUtils.toAlternativeString("ALTerNAtiNG CaSe <=> altERnaTIng cAsE"));
}
}
問題を解く
私の愚かな方法:
public class StringUtils {
public static String toAlternativeString(String string) {
char[] arr = string.toCharArray();
for (int i =0;i= 65) {
arr[i] += 32;
} else if (arr[i] <= 122 && arr[i] >= 97) {
arr[i] -= 32;
}
}
return new String(arr);
}
}
他の人:
public class StringUtils {
public static String toAlternativeString(String string) {
String result = "";
for (char c : string.toCharArray()) {
if(Character.isUpperCase(c)) {
result += Character.toLowerCase(c);
} else {
result += Character.toUpperCase(c);
}
}
return result;
}
}
考える
他の人のコードを見て、公式ライブラリ関数/メソッドの蓄積が足りず、charパッケージクラスにはこのような良いメソッドisUpperCase()があります.