LeetCode之Restore IP Addresses(Kotlin)

问题: git


方法: 主要思路是DFS,穷举全部可能的状况,递归全部组合,而后根据IP的规则进行过滤,即每小段只能为3位,且不大于255,小段数只能为4,最后输出符合规则的全部结果。github

具体实现:bash

class RestoreIPAddresses {
    fun restoreIpAddresses(s: String): List<String> {
        val result = mutableListOf<String>()
        if (s.isEmpty() || s.length > 12) {
            return result
        }
        dfs(s, 0, "", result, 0)
        return result
    }

    private fun dfs(s: String, end: Int, ip: String, result: MutableList<String>, count: Int) {
        for (start in end..end + 2) {
            val ipSegment = s.substring(end..start)
            if (ipSegment.length > 1 && ipSegment[0] == '0') {
                break
            }
            if (ipSegment.toInt() > 255) {
                break
            }
            if (start == s.lastIndex) {
                if (count == 3) {
                    result.add("$ip.$ipSegment")
                }
                break
            }
            if (ip != "") {
                dfs(s, start + 1, "$ip.$ipSegment", result, count+1)
            } else {
                dfs(s, start + 1, ipSegment, result, count+1)
            }
        }
    }
}

fun main(args: Array<String>) {
    val input = "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"
    val restoreIPAddresses = RestoreIPAddresses()
    CommonUtils.printArray(restoreIPAddresses.restoreIpAddresses(input).toTypedArray())
}
复制代码

有问题随时沟通ui

具体代码实现能够参考Githubspa

相关文章
相关标签/搜索