当前位置: 首页 > news >正文

网站负责人核验照哈尔滨企业建站网站开发

网站负责人核验照,哈尔滨企业建站网站开发,临湘建设局网站,微信应用程序开发【华为OD-E卷 - 九宫格按键输入 100分#xff08;python、java、c、js、c#xff09;】 题目 九宫格按键输入#xff0c;有英文和数字两个模式#xff0c;默认是数字模式#xff0c;数字模式直接输出数字#xff0c;英文模式连续按同一个按键会依次出现这个按键上的字母…【华为OD-E卷 - 九宫格按键输入 100分python、java、c、js、c】 题目 九宫格按键输入有英文和数字两个模式默认是数字模式数字模式直接输出数字英文模式连续按同一个按键会依次出现这个按键上的字母如果输入 “/” 或者其他字符则循环中断输出此时停留的字母。 数字和字母的对应关系如下注意 0 只对应空格 输入描述 输入范围为数字 0~9 和字符’#’、’/’输出屏幕显示例如: 在数字模式下输入 1234显示 1234 在英文模式下输入 1234显示,adg 输出描述 输出屏幕显示的字符 用例 用例一 输入 2222/22输出 222222用例二 输入 #2222/22输出 ab用例三 输入 #222233输出 aepython解法 解题思路这段代码的目标是模拟手机键盘的输入处理特别是传统的T9输入法。具体来说用户输入一串字符程序根据输入的字符来模拟手机键盘的按键输入最终输出对应的文本。 T9输入法T9输入法使用数字键来输入字母。例如按键 2 映射到字母 “abc”按键 3 映射到字母 “def”依此类推。如果连续按多次同一个数字键则输出字母的不同选择。例如按键 “2” 第一次按下输出 “a”第二次输出 “b”第三次输出 “c”。 输入规则 输入是一个字符串字符可以是字母、空格、数字、特殊字符如 “#”, “/”, 等。 特殊字符 # 切换输入模式如果当前输入是英文模式则切换为数字输入模式反之亦然。 切换模式时缓存区的字符会被清空并根据输入模式来处理后续字符。 / 则是用于清空当前缓存区的字符不做任何字符转换。 字符 char 根据当前模式和按键次数决定最终字符的输出 class PhoneInput:# 模拟手机键盘上每个按键对应的字母KEYS ( , ,., abc, def, ghi, jkl, mno, pqrs, tuv, wxyz)def __init__(self):# 初始化缓冲区、语言模式、重复计数器self.buf [] # 用来缓存输入的字符self.is_eng False # 是否处于英文模式self.rep 0 # 记录同一按键连续按下的次数def process(self, text):处理输入的字符。遍历每个字符处理后返回最终的文本结果。for char in text :# 如果遇到 #切换语言模式并清空当前输入if char #:self._flush() # 清空当前缓存的字符self.is_eng not self.is_eng # 切换英文与数字模式# 如果遇到 /清空当前缓存区elif char /:self._flush() # 清空当前缓存else:self._handle_char(char) # 处理当前字符return .join(self.buf) # 返回最终的字符结果缓存区内容合并成字符串def _handle_char(self, char):根据当前模式英文或数字处理当前输入的字符。# 如果是数字模式直接将字符加入缓冲区if not self.is_eng:self.buf.append(char)# 如果是英文模式且当前字符与缓存区的最后一个字符不同elif self.rep 0 or char ! self.buf[-1]:self._flush() # 清空缓存准备新输入self.buf.append(char) # 将当前字符加入缓存self.rep 1 # 重置重复计数器else:# 如果当前字符与最后一个字符相同重复计数器加1self.rep 1def _flush(self):刷新缓存区根据输入模式决定当前按键的输出字符。if self.is_eng and self.rep 0:# 如果是英文模式并且有重复按键的记录key int(self.buf.pop()) # 获取按键的数字最后一个字符# 根据重复的次数决定字符的选择使用取余操作循环选择字母char self.KEYS[key][(self.rep - 1) % len(self.KEYS[key])]self.buf.append(char) # 将最终选择的字母加入缓存区self.rep 0 # 重置重复计数器def main():processor PhoneInput() # 创建处理器对象result processor.process(input()) # 获取输入并处理print(result) # 输出处理后的结果if __name__ __main__:main() # 调用main函数启动程序 java解法 解题思路本题的目标是模拟手机键盘的输入处理类似于传统的T9输入法。每个数字键对应多个字符连续按同一个数字键时会依次选择对应的字符。用户输入的字符经过处理后程序返回最终的文本。 输入模式切换如果遇到 # 字符输入模式会在“英文模式”和“数字模式”之间切换。 缓存与重复按键处理如果当前是英文模式且用户连续按下同一个数字键程序会根据按键的次数输出对应的字符如果是数字模式按键直接转换为数字。 处理流程 输入字符串逐字符处理输入的字符串。 输入模式切换 如果是 #切换输入模式并清空缓存。 如果是 /清空当前缓存。 字符处理根据当前模式处理字符 如果是“数字模式”直接将字符追加到输出中。 如果是“英文模式”则根据字符的重复按下次数决定输出字符比如按 2 一次是 “a”按两次是 “b”。 清空操作flush() 方法在需要时将缓存的字符转换为最终的输出字符。 import java.util.Scanner;public class Main {// 手机键盘的每个数字键对应的字母映射private static final String[] KEYS { , ,., abc, def, ghi, jkl, mno, pqrs, tuv, wxyz};private StringBuilder buf; // 用来存储当前的字符序列private boolean isEng; // 是否处于英文模式private int rep; // 记录当前字符的重复按下次数// 构造方法初始化变量public Main() {this.buf new StringBuilder(); // 初始化缓存区this.isEng false; // 默认处于数字模式this.rep 0; // 重复计数初始化为0}// 处理输入文本的核心方法public String process(String text) {// 将输入的文本加上一个空格处理末尾for (char ch : (text ).toCharArray()) {if (ch #) {flush(); // 如果遇到#切换模式并清空缓存isEng !isEng; // 切换英文模式与数字模式} else if (ch /) {flush(); // 如果遇到/清空缓存} else {handleChar(ch); // 处理其他字符}}return buf.toString(); // 返回处理后的结果}// 处理输入字符的逻辑private void handleChar(char ch) {// 如果是数字模式直接将字符加入缓存if (!isEng) {buf.append(ch);} else if (rep 0 || ch ! buf.charAt(buf.length() - 1)) {// 如果是英文模式且当前字符与缓存的最后一个字符不同则清空缓存重新开始flush();buf.append(ch); // 将当前字符添加到缓存rep 1; // 重置重复计数为1} else {// 如果当前字符与最后一个字符相同增加重复计数rep;}}// 刷新缓存的方法根据当前输入决定最终字符private void flush() {// 只有在英文模式下且有重复计数时才进行处理if (isEng rep 0) {// 获取当前字符对应的数字键int key Character.getNumericValue(buf.charAt(buf.length() - 1));// 根据重复次数选取对应的字符char newChar KEYS[key].charAt((rep - 1) % KEYS[key].length());// 替换缓存中的字符buf.setCharAt(buf.length() - 1, newChar);}rep 0; // 重置重复计数}// 主函数程序入口public static void main(String[] args) {Scanner scanner new Scanner(System.in); // 创建Scanner对象读取输入String input scanner.nextLine(); // 读取用户输入的字符串scanner.close(); // 关闭ScannerMain processor new Main(); // 创建Main对象处理输入String result processor.process(input); // 处理输入System.out.println(result); // 输出最终结果} } C解法 解题思路 更新中C解法 解题思路 更新中JS解法 解题思路 这段代码的目标是模拟一个手机键盘的输入处理类似于传统的T9输入法其中用户输入的数字键对应多个字母连续按同一数字键可以依次选择不同的字母。当遇到特殊字符时例如 # 和 /程序会根据这些输入切换输入模式或清空当前输入。 输入模式切换通过 # 来切换输入模式英文模式和数字模式之间进行切换。英文模式下连续按同一个数字键可以输出不同的字母数字模式下直接输出数字字符。 重复按键处理在英文模式下如果连续按下同一个数字键程序会根据按下的次数来输出不同的字符。例如按下数字 2 第一次输出 “a”第二次输出 “b”第三次输出 “c” 等。 清空操作通过 / 来清空当前缓存的输入并结束当前的重复按键计数。 // 引入 readline 模块用于控制台输入输出 const readline require(readline);// 创建 readline 接口允许从标准输入读取数据 const rl readline.createInterface({input: process.stdin,output: process.stdout, });// 定义状态变量 let isEng false; // 是否处于英文模式默认为 false即数字模式 let repeatCount 0; // 记录同一键的重复按次数 const stack []; // 用于存储当前输入的字符序列// 每当读取到一行输入时触发此事件 rl.on(line, (line) {console.log(getResult(line)); // 处理输入并打印结果// 全局变量重置isEng false; // 重置为数字模式repeatCount 0; // 重置重复计数stack.length 0; // 清空栈 });// 主处理函数处理一行输入并返回最终结果 function getResult(s) {s ; // 在输入末尾加上空格用于处理最后一个字符// 遍历输入的每个字符for (let c of s) {switch (c) {case #:toggleMode(); // 遇到#切换输入模式break;case /:interrupt(); // 遇到/清空当前输入break;default:handleCharacter(c); // 处理普通字符break;}}// 返回处理后的结果去掉最后一个空格return stack.slice(0, stack.length - 1).join(); }// 切换输入模式的函数 function toggleMode() {interrupt(); // 切换模式前先清空缓存isEng !isEng; // 切换英文模式与数字模式 }// 中断当前输入清空缓存 function interrupt() {if (!isEng || stack.length 0 || repeatCount 0) return; // 如果不是英文模式或者没有需要处理的字符直接返回stack.push(mapChar(stack.pop(), repeatCount)); // 根据重复次数更新当前字符repeatCount 0; // 重置重复计数 }// 处理普通字符 function handleCharacter(c) {if (!isEng) {// 如果是数字模式直接将字符添加到栈中stack.push(c);} else {// 如果是英文模式处理字符if (repeatCount 0) {stack.push(c); // 如果是第一次按下该键直接加入栈repeatCount; // 重复计数加1} else {// 如果当前字符与栈顶字符不同则刷新当前输入if (c ! stack[stack.length - 1]) {interrupt(); // 清空当前缓存stack.push(c); // 加入新的字符}repeatCount; // 重复计数加1}} }// 定义数字键到字符的映射 const dict [ , // 0 - 空格,., // 1 - ,.abc, // 2 - abcdef, // 3 - defghi, // 4 - ghijkl, // 5 - jklmno, // 6 - mnopqrs, // 7 - pqrstuv, // 8 - tuvwxyz, // 9 - wxyz ];// 根据当前字符和重复次数返回对应的字母 function mapChar(c, repeat) {const num parseInt(c); // 获取数字键const chars dict[num]; // 获取该数字键对应的字符映射return chars[(repeat - 1) % chars.length]; // 根据重复次数选择字符 } 注意 如果发现代码有用例覆盖不到的情况欢迎反馈会在第一时间修正更新。 解题不易如对您有帮助欢迎点赞/收藏
http://www.dnsts.com.cn/news/251460.html

相关文章:

  • 西双版纳网站建设wordpress 外部链接跳转
  • 昆明网站建设优化企业企业网站源码带支付
  • 营销型网站设计方案机械加工网18易3下7拉nrj
  • 拼多多网站建设合同天猫建设网站的意义
  • 学校网站群建设wordpress 安全 插件
  • 银行门户网站建设方案如何建设英文网站
  • 如何做DJ网站双井做网站的公司
  • 如何做网站logo常州app开发公司
  • wordpress文章保存目录合肥seo网站推广费用
  • 音乐类网站模板广安网站建设gphvip
  • 怎样建网站买东西凡科网后台登录
  • 微信客户端网站建设台州网页设计与制作
  • 国外 网页框架搭建的网站网站建设销售发展前景
  • 建设网站桫椤在室内能wordpress用户注册邮箱验证
  • 五金喷漆东莞网站建设wordpress文章页广告插件
  • 网站模板 在哪购买网页建设多少钱
  • 黄冈建设局网站首页国内装修公司
  • 苏州seo公司排名济南网络优化哪家专业
  • 做家庭影院的有哪些网站遵义seo快速排名
  • 企业 网站设计河北明迈特的网站在哪里做的
  • 做网站西宁wordpress毛玻璃主题
  • 个人网站建设 免费90年代设计
  • 网站更换服务器 seo机械加工图纸标注符号大全
  • 用织梦做的网站下载地址南京公司网站建设怎么收费
  • 合肥高端网站建设设计公司哪家好永州网站建设公司推荐
  • 外贸产品网站建设广西壮族自治区成立于哪一年
  • 什么类型的网站比较容易做WordPress修改首页文章预览
  • 浅谈企业网站建设的目标汽车销售服务东莞网站建设
  • 路由器怎么做网站wordpress模板 sky
  • 住房和城乡建设部网站监理合同常州网站优化