java如何获取word中字母的位置
我需要获取word中字母的索引,例如:
一些词| 743295618
D-单词中的第一个字母(相对于字母表),所以uuuuu1 ue-第二个->;uuu2 uu1 um-第三->;u3 2 _ _ _ 1 _ ... 等
星| 3412
信| 314526
所以,我需要在java上编写一个函数,它接受字符串并用索引返回int或用这个索引返回int数组! 对不起,我的英语不好
你可以在下面搜索框中键入要查询的问题!
我需要获取word中字母的索引,例如:
一些词| 743295618
D-单词中的第一个字母(相对于字母表),所以uuuuu1 ue-第二个->;uuu2 uu1 um-第三->;u3 2 _ _ _ 1 _ ... 等
星| 3412
信| 314526
所以,我需要在java上编写一个函数,它接受字符串并用索引返回int或用这个索引返回int数组! 对不起,我的英语不好
# 1 楼答案
假设你的字母表和单词只包含大写ASCII字母,你可以这样定义它:
然后,您只需要遍历字符串的每个字符(您应该能够做到这一点,或者至少可以使用字符串javadoc计算出来),然后使用
对于更通用的解决方案,可以将字母表定义为
Map<Character, Integer>
,其中键是字母表中的所有字符,值是字母表中字符的索引然后你会使用
# 2 楼答案
有很多方法可以完成这个任务(我只是再次阅读了这个问题,发现我以前可能误解了,所以更新了这个答案)
我认为最简单的是双环。外循环依次取字母表中的每个字母。但是,开始声明与单词长度相同的
int
数组。还将已编号字母的计数初始化为0。如果使用大写英文字母,则外部循环可以是for (char letter = 'A'; letter <= 'Z'; letter++)
。内部循环一次遍历一个字符。如果字符与字母相同,则递增计数器并将其分配到int
数组中与单词中的位置相对应的位置。例如,在检查LETTER
中的E
时,您将在索引1处遇到它(基于0),因此将数字1放入数组的索引1中。您将在索引4处再次遇到E
,将计数器增加到2,并将这2分配到数组的索引4中。完成字母表后,数组中的所有单元格都应该有不同的数字。如果数组中还有0,那是因为这个单词包含的不是大写的英文字母通常情况下,大多数字母都不在你的单词中,所以大多数情况下,通过外循环,什么都不会发生。别担心。除此之外,这种方法基本上模仿了你在问题中概述的程序。它首先在正确的位置填入1,然后填入2,以此类推
另一个选择是对字母进行排序。但你还是要知道他们来自哪里。因此,对于这个选项,声明一个包含两个字段的类,字母及其在原始单词中的索引。为单词的每个字母创建一个类的对象。将所有对象放入列表或数组中
LETTER
将变成类似于[L0, E1, T2, T3, E4, R5]
按字母对列表或数组排序。让类实现Comparable
接口可能是最简单的方法(另一种选择是Comparator
)。使用标准的Javasort
方法,比如Collections.sort()
或List.sort()
。它们是稳定的,也就是说,不会交换相同的字母,因此您可以确保之前的列表或数组将被排序为[E1, E4, L0, R5, T2, T3]
。现在循环浏览这个列表。对于每个对象,向该对象的索引中添加一个,并将该和分配到从该对象获得的索引中的int
数组(如前所述)。例如:在索引0处有E1,所以将0+1(即1)放入yourNumberArray[1]. At index 1 you have E4, so put 1 + 1 into
yourNumberArray[4]。这将给出与第一种方法相同的结果旧答案
旧的答案是214413。我相信现在你们需要315624,没有重复的数字
第一步是按字母顺序对单词中的字母进行排序,以确定它们在字母表中的顺序。字母的自然顺序与英语字母表中的顺序一致(如果你需要其他字母表,这是一个复杂的问题,但可以做到,不太难)。如果只对所有字母进行排序,例如
LETTER
变成EELRTT
,则排序数组中的位置由于重复而与顺序不完全对应为了同时对重复项进行排序和消除,我建议您使用
TreeSet<Character>
。只需将单词的所有字母添加到集合中,它就会忽略重复的字母。将集合中的字符放入String
(您可以使用集合的stream
或其iterator
方法,它们按正确的顺序分发字符,然后使用StringBuilder
)。使用字符串的indexOf(int)
方法来确定排序字符串中字符的索引(只需给方法一个char
,不管参数的类型是int
)。向索引中添加1,因为索引是基于0的,并且需要一个基于1的数字(对于LETTER
,您不需要203415,而是314526)。就这样我将把代码留给你。快乐编码