Isogram인지아닌지 판단하기
isogram이란 ?
아이 서 그램 (또한 "패턴이 아닌 단어"로 알려진)는이다 logological 반복 편지 쓰기없는 단어 나 구문 용어. 또한 어떤 사람들은 각 문자가 같은 횟수만큼 나타나는 단어 나 구를 의미하기도합니다. 반드시 한 번만 쓰는 것은 아닙니다. [1] 편리한 단어 자체가있어 단어 모두 감각의 아이 서 그램이다
testCode
@RunWith(Parameterized::class)
class IsogramTest(val input: String, val expectedOutput: Boolean) {
companion object {
@JvmStatic
@Parameterized.Parameters(name = "{index}: isogram({0})={1}")
fun data() = listOf(
arrayOf("", true),
arrayOf("isogram", true),
arrayOf("eleven", false),
arrayOf("subdermatoglyphic", true),
arrayOf("Alphabet", false),
arrayOf("thumbscrew-japingly", true),
arrayOf("six-year-old", true),
arrayOf("Emily Jung Schwartzkopf", true),
arrayOf("accentor", false)
)
}
@Test
fun test() {
assertEquals(expectedOutput, Isogram.isIsogram(input))
}
}
1. 정규식으로 중복이 있는지 찾기
object Isogram {
fun isIsogram(input: String): Boolean {
val macher = Pattern.compile("[a-z]").matcher(input.toLowerCase())
val atozGroup = mutableListOf<String>()
while (macher.find()) {
if (!atozGroup.contains(macher.group()))
atozGroup.add(macher.group())
else return false
}
return true
}
}
2. toSet으로 중복찾기
object Isogram {
fun isIsogram(input: String) = input.toLowerCase()
.filter {char->
char.isLetter()
}.let {
it.toSet().size==it.length
}
}
1) toLowerCase로 소문자변경하기
2) filter와 Char.isLetter() 으로 문자만 필터
3) toSet() - > 중복이제거된 요소 리턴
toSet의 사이즈와 전체 length를 비교하여
같으면 true 아니면 false
'Kotlin > Exercise' 카테고리의 다른 글
윤년 찾기 (4) | 2019.03.03 |
---|---|
Hamming -DNA 차이 (2) | 2019.03.03 |
영어에서 돼지 라틴어로 번역하기 (2) | 2019.02.24 |
Raindrop - 숫자를 문자열로 변환하기 (2) | 2019.02.23 |
Pangram인지 판단하기 (4) | 2019.02.23 |
댓글