(新卷,100分)- 单词加密(Java & JS & Python)
题目描述
1、输入一个英文句子,句子中包含若干个单词,每个单词间有一个空格;
2、需要将句子中的每个单词按照要求加密输出。
要求:
1)单词中包括元音字符(‘aeuio’、‘AEUIO’,大小写都算),则将元音字符替换成‘*’
2)单词中不包括元音字符,将单词首尾字符进行对换
输入描述
输入只有一行,包含一个长度都不超过100的字符串,表示英文句子。
输出描述
输出只有一行,即按要求输出加密处理后的英文句子
用例
| 输入 | Hello world |
| 输出 | H*ll* w*rld |
| 说明 | 无 |
题目解析
简单的正则应用。
JS算法源码
/* JavaScript Node ACM模式 控制台输入获取 */ const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); rl.on("line", (line) => { console.log(getResult(line)); }); function getResult(s) { const words = s.split(" "); for (let i = 0; i < words.length; i++) { if (/[aeiouAEIOU]/.test(words[i])) { words[i] = words[i].replaceAll(/[aeiouAEIOU]/g, "*"); } else { const arr = [...words[i]]; const tmp = arr[0]; arr[0] = arr[arr.length - 1]; arr[arr.length - 1] = tmp; words[i] = arr.join(""); } } return words.join(" "); }Java算法源码
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.nextLine(); System.out.println(getResult(s)); } public static String getResult(String s) { String[] words = s.split(" "); for (int i = 0; i < words.length; i++) { Matcher matcher = Pattern.compile("[aeiouAEIOU]").matcher(words[i]); if (matcher.find()) { words[i] = matcher.replaceAll("*"); } else { char[] cArr = words[i].toCharArray(); char tmp = cArr[0]; cArr[0] = cArr[cArr.length - 1]; cArr[cArr.length - 1] = tmp; words[i] = new String(cArr); } } return String.join(" ", words); } }Python算法源码
import re # 输入获取 s = input() # 算法入口 def getResult(): words = s.split() letter = "[aeiouAEIOU]" for i in range(len(words)): if re.search(letter, words[i]): words[i] = re.sub(letter, "*", words[i]) else: lst = list(words[i]) lst[0], lst[-1] = lst[-1], lst[0] words[i] = "".join(lst) return " ".join(words) # 算法调用 print(getResult())