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

网站排名优化价格格瑞特网站建设

网站排名优化价格,格瑞特网站建设,做字网站,邯郸制作小程序的公司题目描述 九宫格按键输入,输出显示内容。有英文和数字两个模式,默认是数字模式。数字模式直接输出数字,英文模式连续按同一个按键会依次出现这个按键上的字母。如果输入“/”或其他字符,则循环中断。 输入描述 输入范围为数字0…

题目描述

九宫格按键输入,输出显示内容。有英文和数字两个模式,默认是数字模式。数字模式直接输出数字,英文模式连续按同一个按键会依次出现这个按键上的字母。如果输入“/”或其他字符,则循环中断。

输入描述

输入范围为数字0~9和字符#、/。输出屏幕显示。例如在数字模式下,输入1234,显示1234;在英文模式下,输入1234,显示,adg。

输出描述

  • #用于切换模式,默认是数字模式,执行#后切换为英文模式。
  • /表示延迟,例如在英文模式下,输入22/222,显示为bc。
  • 英文模式下,多次按同一键,例如输入22222,显示为b。

解题思路

这个问题可以通过状态机来解决。我们需要维护当前模式(数字模式或英文模式)以及当前按键的连续按击次数。根据输入字符的不同,我们更新状态并生成相应的输出。

代码实现

Java
import java.util.*;public class NineKeyInput {private static final String[] DIGITS = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};private static final String[] LETTERS = {" ", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};public String processInput(String input) {boolean isNumberMode = true;StringBuilder output = new StringBuilder();int index = 0;while (index < input.length()) {char ch = input.charAt(index);if (ch == '#') {isNumberMode = !isNumberMode;index++;} else if (ch == '/') {index++;} else if (Character.isDigit(ch)) {int digit = ch - '0';if (isNumberMode) {output.append(DIGITS[digit]);index++;} else {int count = 0;while (index < input.length() && input.charAt(index) == ch) {count++;index++;}String letters = LETTERS[digit];output.append(letters.charAt((count - 1) % letters.length()));}} else {index++;}}return output.toString();}public static void main(String[] args) {NineKeyInput processor = new NineKeyInput();System.out.println(processor.processInput("123#222235/56")); // 123adjjm}
}
Python
class NineKeyInput:DIGITS = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]LETTERS = [" ", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"]def process_input(self, input_str):is_number_mode = Trueoutput = []index = 0while index < len(input_str):ch = input_str[index]if ch == '#':is_number_mode = not is_number_modeindex += 1elif ch == '/':index += 1elif ch.isdigit():digit = int(ch)if is_number_mode:output.append(self.DIGITS[digit])index += 1else:count = 0while index < len(input_str) and input_str[index] == ch:count += 1index += 1letters = self.LETTERS[digit]output.append(letters[(count - 1) % len(letters)])else:index += 1return ''.join(output)processor = NineKeyInput()
print(processor.process_input("123#222235/56"))  # 123adjjm
C++
#include <iostream>
#include <string>
#include <vector>using namespace std;class NineKeyInput {
private:vector<string> DIGITS = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};vector<string> LETTERS = {" ", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};public:string processInput(string input) {bool isNumberMode = true;string output;int index = 0;while (index < input.length()) {char ch = input[index];if (ch == '#') {isNumberMode = !isNumberMode;index++;} else if (ch == '/') {index++;} else if (isdigit(ch)) {int digit = ch - '0';if (isNumberMode) {output += DIGITS[digit];index++;} else {int count = 0;while (index < input.length() && input[index] == ch) {count++;index++;}string letters = LETTERS[digit];output += letters[(count - 1) % letters.length()];}} else {index++;}}return output;}
};int main() {NineKeyInput processor;cout << processor.processInput("123#222235/56") << endl; // 123adjjmreturn 0;
}
JavaScript
class NineKeyInput {constructor() {this.DIGITS = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];this.LETTERS = [" ", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"];}processInput(input) {let isNumberMode = true;let output = '';let index = 0;while (index < input.length) {const ch = input[index];if (ch === '#') {isNumberMode = !isNumberMode;index++;} else if (ch === '/') {index++;} else if (/\d/.test(ch)) {const digit = parseInt(ch);if (isNumberMode) {output += this.DIGITS[digit];index++;} else {let count = 0;while (index < input.length && input[index] === ch) {count++;index++;}const letters = this.LETTERS[digit];output += letters[(count - 1) % letters.length];}} else {index++;}}return output;}
}const processor = new NineKeyInput();
console.log(processor.processInput("123#222235/56")); // 123adjjm

复杂度分析

  • 时间复杂度: O(n),其中n是输入字符串的长度。我们需要遍历整个字符串一次来处理每个字符。
  • 空间复杂度: O(1),除了输出字符串外,我们只使用了常数空间来存储模式和当前按键的连续按击次数。

总结

我们使用了状态机来处理这个问题,通过维护当前模式和按键的连续按击次数,能够有效地生成相应的输出。这种方法简单直观,适用于处理这种模式切换和按键映射的问题。


文章转载自:

http://Bsa4MCfT.bspLf.cn
http://MX7FcK0t.bspLf.cn
http://N976OcPg.bspLf.cn
http://a6kVL4ZY.bspLf.cn
http://NGejQjm7.bspLf.cn
http://ut7kPwL8.bspLf.cn
http://Cv5v8uVu.bspLf.cn
http://8vjZ1ERq.bspLf.cn
http://0aun2OKd.bspLf.cn
http://00wKE1mD.bspLf.cn
http://aVqsuegq.bspLf.cn
http://QqZMOqZ7.bspLf.cn
http://Ip5Vs7jh.bspLf.cn
http://tgCMllf9.bspLf.cn
http://m8OwFeHH.bspLf.cn
http://hr9r9I0M.bspLf.cn
http://1HcQrktw.bspLf.cn
http://baYjo4RY.bspLf.cn
http://itxLgICW.bspLf.cn
http://cBz8koO7.bspLf.cn
http://wAbUYwWE.bspLf.cn
http://uskKfXoq.bspLf.cn
http://KMhlEksl.bspLf.cn
http://4SV66vbn.bspLf.cn
http://AnEPvuZp.bspLf.cn
http://J8Knpybr.bspLf.cn
http://crbiTLCc.bspLf.cn
http://6Lw5DDkP.bspLf.cn
http://VkAyPxmf.bspLf.cn
http://XeMnpWEK.bspLf.cn
http://www.dtcms.com/wzjs/651443.html

相关文章:

  • 会网站建设好吗阿里巴巴网站怎么做
  • 顺德网站建设域名怎样在网站做友情链接
  • 如何联系网站管理员中国住房建设部网站首页
  • 网站推广的途径和要点wordpress登录返回
  • 企业 手机门户网站怎么把网站源码
  • 做健康食品的网站做公司网站需要准备什么科目
  • 长宁建设机械网站做网站的学什么
  • 字体在线生成器seo站内优化公司
  • 国外有做塑料粒子的网站吗网站开发和数据库哪个有前途
  • 婚纱摄影网站开发的目的怎么创建二级域名
  • 公司网站asp后台维护如何海外网站建设
  • 网站推广方法是什么绵阳住房和城市建设局网站官网
  • 鄂州网站开发怎样让百度快速收录网站
  • 站长工具seo客户端餐饮如何做网络营销
  • dz增加网站标签外贸网站制作时间及费用
  • 廊坊网页搜索排名提升seo搜索引擎优化费用
  • 优化核心系列网站网站专栏的作用
  • 创意网站案例开一家网店
  • 手机网站智能建站绍兴以往网站招工做
  • 做网站找不到客户网络销售网站
  • 如何仿做网站网站内容布局
  • 长治一般做一个网站需要多少钱p2p网站建设规划
  • 做淘口令网站网站做二维码吗
  • 企业网站怎么搜索优化wordpress 通讯录插件
  • 品牌网站建设切入点计科专业毕设做网站
  • 网站维护花费网站建设项目实训报告书
  • 阿里云网站托管网站开发好还要空间吗
  • 做装修公司网站费用涂鸦智能深圳分公司
  • 劳务输送网站建设方案2019为网站网站做代理被判缓刑
  • 泉州外贸网站建设都有哪些公司乐趣做网站