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

oppo软件商店下载aso优化什么意思

oppo软件商店下载,aso优化什么意思,做的网站在百度找不到了,身份证过期了可以做网站备案吗题目描述 九宫格按键输入,输出显示内容。有英文和数字两个模式,默认是数字模式。数字模式直接输出数字,英文模式连续按同一个按键会依次出现这个按键上的字母。如果输入“/”或其他字符,则循环中断。 输入描述 输入范围为数字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://www.dtcms.com/wzjs/421924.html

相关文章:

  • 做商城网站哪里怎么样自己创建网站
  • 射阳做网站公司外贸业务推广
  • 购物网站需要哪些模块seo全网推广营销软件
  • 网站后台管理系统怎么做的地推平台
  • 网站开发的架构线上怎么做推广和宣传
  • 关键词推广排名软件免费网站seo优化
  • 网站建设话术开场白数字营销
  • 注销营业执照怎么办理注销长沙网站优化推广
  • nginx优化wordpress网站速度今日国内新闻头条15条
  • 专做健身餐的网站二级域名免费分发
  • 公司装修设计公司seo费用价格
  • 锦州网站建设多少钱各平台推广费用
  • 记事本做网站改变图片大小徐州关键词优化排名
  • 下载网站的软件百度高级搜索技巧
  • 比较好的设计欣赏网站百度应用市场app下载安装
  • 郑州网站建设推销郑州seo服务公司
  • 马铃薯交易网站建设方案精准营销通俗来说是什么
  • 自助网站建设方法厦门谷歌seo
  • wordpress独立手机站什么是淘宝搜索关键词
  • 郑州网站排名优化淘宝运营培训班
  • 做网站开发百度贴吧官网
  • 深圳网站开发公司 有哪些网络营销产品的首选产品
  • 网站免费正能量入口百度后台推广登录
  • 做菠菜网站seo企业培训班
  • 驻马店做网站的公司媒体吧软文平台
  • 建网站需不需要服务器百度快速排名化
  • 李贤威wordpress建站教程英语培训
  • 哪个网站做废旧好网站推广途径和推广要点有哪些?
  • 青岛免费建网站中囯联通腾迅
  • 网站是先解析还是先备案今天刚刚发生的新闻