【白俊】1316番組合せ語チェク


1316番組単語チェック

方法


キー値としてアルファベットを使用するMapを作成し、booleanタイプが使用されているかどうかを確認する値を追加します.
  • マッピング[アルファベット]の値がfalseの場合、
  • は表示されません.
  • [アルファベット]=trueをマップします.古い値が現在の値と同じである場合、
  • が連続します.
  • [アルファベット]=trueをマッピングし、以前の値と異なる場合、断続的なアルファベット
  • が表示されます.
    したがって,3つ目の場合はグループ語として含めるだけでよい.
    import java.io.BufferedReader
    import java.io.InputStreamReader
    
    
    val br = BufferedReader(InputStreamReader(System.`in`))
    val n = br.readLine().toInt()
    
    fun main() {
        val strList = mutableListOf<String>()
        for (i in 0 until n) {
            strList.add(br.readLine().trim())
        }
        
        val map = getAlphabetMap()
        var ans = 0    
        strList.forEach { word ->
            var now = "1"
            var flag = false
            word.forEach {
                val str = it.toString()
                if (map[str] == false) {
                    map[str] = true
                    now = str
                } else if (map[str] == true && now != str) {
                    flag = true
                    return@forEach
                }
            }
            if (!flag) {
                ans++
            }
            resetAlphabetMap(map)
        }
        println(ans)
    }
    
    fun getAlphabetMap(): HashMap<String, Boolean> {
        return hashMapOf<String, Boolean>().also { map ->
            ('a'..'z').forEach { it->
                map[it.toString()] = false
            }
        }
    }
    
    fun resetAlphabetMap(map: HashMap<String, Boolean>) = map.keys.forEach { key -> map[key] = false }