阵列的工作结构。 java中的binarySearch()方法
Posted
技术标签:
【中文标题】阵列的工作结构。 java中的binarySearch()方法【英文标题】:Working Sturcture of Arrays. binarySearch() method in java 【发布时间】:2019-05-18 16:17:33 【问题描述】:我正在尝试解决字符串中的问题,在字符串中查找匹配的字符。 我使用字符数组和内部循环来解决它,但我认为它的时间复杂度更高。所以尝试在数组二进制搜索中解决它,但它给出了不合适的结果。我想要java中二进制搜索方法的工作结构。
我在字符串二中设置了匹配值来复制字符'#',因为不想匹配另一个字符。
public static void main(String[] args)
Scanner s= new Scanner(System.in);
String team1 = s.next();
String team2 = s.next();
char[] teamA = team1.toCharArray();
char[] teamB = team2.toCharArray();
Arrays.sort(teamB);
int count = 0;
for(int a=0;a< teamA.length;a++)
int index = Arrays.binarySearch(teamB, teamA[a]);
if(index >= 0)
count++;
teamB[index] = '#';
System.out.println(count);
如果我输入两个字符串 "aabc" 和 "zbaa" 预期输出为 3 但我的程序给出了输出 2。
【问题讨论】:
【参考方案1】:问题在于,一旦您在循环中更新了teamB
数组,该数组就不再排序。而在未排序的数组中,二分查找会给出意想不到的输出。
【讨论】:
谢谢,二分查找仅在数组排序后才有效。以上是关于阵列的工作结构。 java中的binarySearch()方法的主要内容,如果未能解决你的问题,请参考以下文章
用于矢量化的随机读取上的结构阵列 (AoS) 与阵列结构 (SoA)
java 532.阵列中的K-diff对(第1个).java