【发布时间】:2020-07-02 20:51:25
【问题描述】:
我需要在 Java translate_string() 中创建一个函数, 它正在逐个字母地“翻译”字符串。 函数以String为参数,返回String[]数组:
public static String[] translate_string(String string)
给定现有函数 translate_letter(), 它将 String 作为 arg 并返回 String[]
的数组public static String[] translate_letter(String letter)
它翻译每个字母,我需要按顺序翻译 将整个字符串逐个字母组合成输出字符串。 复杂性是,一个字符可以翻译成多个 字符集,不是一一对应的关系 输入字符串和输出字符串,是-一对多的关系, 其中一个字母作为输入可以产生多种组合 (即数组)作为输出。
注意:术语翻译与实际翻译无关 一种语言到另一种语言,只是替换一个字符 设置其他字符。
以下是函数的确切代码 id 简化版本 translate_letter()(无需修改):
//------------------------------------------------------------
// translate letters - return array of diff combinations
public static String[] translate_letter(String s) {
ArrayList<String> o = new ArrayList<>(1);
if ( s.equals("a") ) { // if a
o.add("a1");
} else {
if ( s.equals("b") ) { // if b
o.add("b1"); o.add("b2");
} else {
if ( s.equals("c") ) { // if c
o.add("c1"); o.add("c2"); o.add("c3");
} else {
if ( s.equals("d") ) { // if d
o.add("d1"); o.add("d2"); o.add("d3"); o.add("d4");
} else {
o.add(s); // s = def add (if nothing above matches)
} // end if d
} // end if c
} // end if b
} // end if a
//Convert ArrayList o to string array[]
String[] array = o.toArray(new String[o.size()]);
return array;
} // end translate_letter()
//------------------------------------------------------------
那么,如何翻译字符串呢? 让我们看一下 translate 的简单版本 - 当 translate_letter() 只返回字符串。 所以,字母“a”将被翻译成“a1”,字母“b” 将被翻译成“b1”,“c” - 到“c1”。 输入字符串“a”将被翻译为“a1”,简单。 输入字符串“ab”将被翻译为“a1b1”,简单。 输入字符串“abc”将被翻译为“a1b1c1”,简单。 我不需要创建这个简单的版本——这里没什么可做的, 只需拆分输入字符串并逐个字母翻译。
我想写的(我不能这样做)- 是 translate_string() 的复杂版本, 当函数 translate_letter() 返回多个组合时, 即 - 输出组合数组。
例如(根据上面 translate_letter() 的代码, 字母“a”将被翻译成“a1”,简单。 但是字母“b”会被 translate_letter() 翻译成 2 种组合: “b1”和“b2”, 输出是 String[] array = {"b1", "b2" }
因此,字符串“a”将被 translate_string() 转换为 只有 1 个元素 R[] = { "a1" }
String "ab" will be translated as array of 2 elements
R[] = { "a1b1", "a1b2" }
String "abc" will be translated as:
R[] = { "a1b1c1", "a1b1c2", "a1b1c3", "a1b2c1", "a1b2c2", "a1b2c3" }
String "db" will be translated as:
R[] = { "d1b1", "d2b1", "d3b1", "d4b1", "d1b2", "d2b2", "d3b2", "d4b2" }
这个任务比最初看起来更复杂 看它。我尝试了两种方法但失败了 - 简单的数组 [] 和 ArrayList 的 Array[] - 不能循环遍历两个数组(具有不同的 索引)并需要一些外部帮助或想法 - 如何完成此操作。
【问题讨论】:
-
而不是 IF-Else ..尝试使用 IF- ELSE IF - ELSE IF - ELSE .. 代码会更干净
-
不应该把
db变成{ "d1b1", "d2b1", "d3b1", "d4b1", "d1b2", "d2b2", "d3b2", "d4b2" }吗? -
我无法从您的问题描述中判断一个字母是因为它在字符串中的位置而重复,还是因为它在字母表中的位置而重复?
标签: java arrays string arraylist