Java实现 LeetCode 423 从英文中重建数字
2023-09-14 08:58:05 时间
423. 从英文中重建数字
给定一个非空字符串,其中包含字母顺序打乱的英文单词表示的数字0-9。按升序输出原始的数字。
注意:
输入只包含小写英文字母。
输入保证合法并可以转换为原始的数字,这意味着像 “abc” 或 “zerone” 的输入是不允许的。
输入字符串的长度小于 50,000。
示例 1:
输入: “owoztneoer”
输出: “012” (zeroonetwo)
示例 2:
输入: “fviefuro”
输出: “45” (fourfive)
PS:
我认为这是leetcode第一个问题描述和测试用例一样的
b( ̄▽ ̄)d
class Solution {
public String originalDigits(String s) {
int[] wordCnt = new int[26];
for (char c : s.toCharArray()) {
wordCnt[c - 'a']++;
}
int[] numCnt = new int[10];
numCnt[0] = wordCnt['z' - 'a'];
numCnt[2] = wordCnt['w' - 'a'];
numCnt[4] = wordCnt['u' - 'a'];
numCnt[6] = wordCnt['x' - 'a'];
numCnt[8] = wordCnt['g' - 'a'];
numCnt[1] = wordCnt['o' - 'a'] - numCnt[0] - numCnt[2] - numCnt[4];
numCnt[3] = wordCnt['h' - 'a'] - numCnt[8];
numCnt[5] = wordCnt['f' - 'a'] - numCnt[4];
numCnt[7] = wordCnt['s' - 'a'] - numCnt[6];
numCnt[9] = wordCnt['i' - 'a'] - numCnt[5] - numCnt[6] - numCnt[8];
int len = 0;
for (int c : numCnt) {
len += c;
}
char[] res = new char[len];
len = 0;
for (int i = 0; i <= 9; i++) {
for (int j = 0; j < numCnt[i]; j++) {
res[len++] = (char)('0' + i);
}
}
return new String(res);
}
}
相关文章
- Java实现 LeetCode 804 唯一摩尔斯密码词 (暴力)
- Java实现 LeetCode 730 统计不同回文子字符串(动态规划)
- Java实现 LeetCode 687 最长同值路径(递归)
- Java实现 LeetCode 617 合并二叉树(遍历树)
- Java实现 LeetCode 581 最短无序连续子数组(从两遍搜索找两个指针)
- Java实现 LeetCode 480 滑动窗口中位数
- Java实现 LeetCode 459 重复的子字符串
- Java实现 LeetCode 454 四数相加 II
- Java实现 LeetCode 380 常数时间插入、删除和获取随机元素
- Java实现 LeetCode 347 前 K 个高频元素
- Java实现 LeetCode 275 H指数 II
- Java实现 LeetCode 211 添加与搜索单词 - 数据结构设计
- Java实现 LeetCode 337 打家劫舍 III(三)
- Java实现 LeetCode 84 柱状图中最大得矩形
- Java实现 LeetCode 140 单词拆分II
- Java实现 LeetCode 212 单词搜索 II
- mysql-connector-java与Mysql、Java的对应版本