题解 | #简单密码#
简单密码
https://www.nowcoder.com/practice/7960b5038a2142a18e27e4c733855dac
package main import ( "fmt" "strings" ) func main() { var password string fmt.Scan(&password) result := transformPassword(password) fmt.Println(result) } func transformPassword(password string) string { mapping := map[byte]byte{ 'a': '2', 'b': '2', 'c': '2', 'd': '3', 'e': '3', 'f': '3', 'g': '4', 'h': '4', 'i': '4', 'j': '5', 'k': '5', 'l': '5', 'm': '6', 'n': '6', 'o': '6', 'p': '7', 'q': '7', 'r': '7', 's': '7', 't': '8', 'u': '8', 'v': '8', 'w': '9', 'x': '9', 'y': '9', 'z': '9', 'A': 'b', 'B': 'c', 'C': 'd', 'D': 'e', 'E': 'f', 'F': 'g', 'G': 'h', 'H': 'i', 'I': 'j', 'J': 'k', 'K': 'l', 'L': 'm', 'M': 'n', 'N': 'o', 'O': 'p', 'P': 'q', 'Q': 'r', 'R': 's', 'S': 't', 'T': 'u', 'U': 'v', 'V': 'w', 'W': 'x', 'X': 'y', 'Y': 'z', 'Z': 'a', } var result strings.Builder for i := 0; i < len(password); i++ { char := password[i] if val, ok := mapping[char]; ok { result.WriteByte(val) } else { result.WriteByte(char) } } return result.String() }
以下是使用Golang实现密码变换算法的示例代码:
package main import ( "fmt" "strings" ) func transformPassword(password string) string { keyboardMapping := map[rune]rune{ 'a': '2', 'b': '2', 'c': '2', 'd': '3', 'e': '3', 'f': '3', 'g': '4', 'h': '4', 'i': '4', 'j': '5', 'k': '5', 'l': '5', 'm': '6', 'n': '6', 'o': '6', 'p': '7', 'q': '7', 'r': '7', 's': '7', 't': '8', 'u': '8', 'v': '8', 'w': '9', 'x': '9', 'y': '9', 'z': '9', 'A': 'b', 'B': 'c', 'C': 'd', 'D': 'e', 'E': 'f', 'F': 'g', 'G': 'h', 'H': 'i', 'I': 'j', 'J': 'k', 'K': 'l', 'L': 'm', 'M': 'n', 'N': 'o', 'O': 'p', 'P': 'q', 'Q': 'r', 'R': 's', 'S': 't', 'T': 'u', 'U': 'v', 'V': 'w', 'W': 'x', 'X': 'y', 'Y': 'z', 'Z': 'a', } var transformedPassword strings.Builder for _, char := range password { if replacement, ok := keyboardMapping[char]; ok { transformedPassword.WriteRune(replacement) } else { transformedPassword.WriteRune(char) } } return transformedPassword.String() } func main() { var password string fmt.Scanln(&password) transformedPassword := transformPassword(password) fmt.Println(transformedPassword) }
请注意,此代码假设输入的密码只包含小写字母、大写字母、数字和其他符号。如果输入包含其他字符,它们将被保留在输出中而不进行任何变换。