gpt4 book ai didi

c# - 在确定一个字符串需要多少个字母替换为另一个字符串的变位词时,我的算法有什么缺陷?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:17:39 26 4
gpt4 key购买 nike

我已经盯着这个看了半个小时了,我不知道我哪里错了!在某些测试用例中,我得到的 count 答案显然不正确。我已经测试了该程序的每个子例程并且它按预期工作。那么 WTF?

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
class Solution
{
static void Main(String[] args)
{
int T = Int32.Parse(Console.ReadLine());
for(int t = 0; t < T; ++t)
{

string str = Console.ReadLine();
if(str.Length % 2 == 1) // str couldn't be split into halves
{
Console.WriteLine(-1);
continue;
}
// determine how many replacements s1 needs to be an anagram of s2
int n = str.Length / 2;
string s1 = str.Substring(0, n);
string s2 = str.Substring(n, n);
int[,] counter = new int[26,2]; // counter[i,j] will be the # of occurences of the i-th letter
// of the alphabet in string sj
int ascii_a = (int)'a';
for(int i = 0; i < n; ++i)
{
counter[(int)s1[i] - ascii_a, 0] += 1;
counter[(int)s2[i] - ascii_a, 1] += 1;
}

// sum difference of occurences in each letter, and divide sum by 2
int count = 0;
for(int i = 0; i < n; ++i)
{
count += Math.Abs(counter[i, 0] - counter[i, 1]);
}
count /= 2;

Console.WriteLine(count);
}
}
}

测试输入:

aaabbb
ab
abc
mnop
xyyx
xaxbbbxx

我的输出:

3
0
-1
0
0
1

预期输出:

3
1
-1
2
0
1

最佳答案

s2 被分配为:

string s2 = str.Substring(n, n);

我猜你想使用:

string s2 = str.Substring(n, str.Length);

我认为这应该可以解决您遇到的问题,但是对于第一个输入,您当前的输出异常准确

关于c# - 在确定一个字符串需要多少个字母替换为另一个字符串的变位词时,我的算法有什么缺陷?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38792223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com