由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - Leetcode: String Reorder Distance Apart解法改进
相关主题
请教G的一道题,觉得有点难……问题:从电话号码打出所有单词
请教一道leetcode的新题LeetCode上word search问题的几个例子不对
leetcode-- scramble stringfacebook的面试题
急问F家面试一题interleave string 的题目
判断两个Strings是否相差一个Edit distanceleetcode 上的 two sum
Permutation leetcode-贡献一道题
问个题leetcode 的 Insert Interval 就是过不了大的
LeetCode Scramble String 疑问大家帮我看看这个程序哪里有问题啊!!
相关话题的讨论汇总
话题: int话题: freq话题: string话题: distance话题: used
进入JobHunting版参与讨论
1 (共1页)
m**********e
发帖数: 22
1
今天重做leetcode:String Reorder Distance Apart。发现1337c0d3r给出的答案(http://discuss.leetcode.com/questions/31/string-reorder-distance-apart)有较大改进的地方:"used" array and the while loop inside the for loop are not needed. I wrote one with C#:
// String Reorder Distance Apart
public string ReorderDistanceApart(string str, int distance)
{
int[] freq = new int[256];
int[] used = new int[256];
bool[] except = new bool[256];
int n = str.Length;
int i,j;
char[] results = new char[n];
for (i = 0; i < n; ++i)
{
freq[str[i]]++;
}
for (i = 0; i < n; ++i)
{
int indexCur = GetLargestFreq(freq, used);
results[i] = (char)indexCur;
used[indexCur] = distance;
freq[indexCur]--;
for (j = 0; j < 256; ++j)
{
if (used[j] > 0)
used[j]--;
}
}
return new string(results);
}
private int GetLargestFreq(int[] freq, int[] used)
{
int maxFreq = INT_MIN;
int maxInd = -1;
for (int i=0; i<256; i++)
{
if (freq[i] > maxFreq && used[i] <= 0)
{
maxFreq = freq[i];
maxInd = i;
}
}
return maxInd;
}
1 (共1页)
进入JobHunting版参与讨论
相关主题
大家帮我看看这个程序哪里有问题啊!!判断两个Strings是否相差一个Edit distance
一道关于trie的题目Permutation leetcode-
请教下leetcode Permutations II问个题
wordBreak问题,有非递归的方法么LeetCode Scramble String 疑问
请教G的一道题,觉得有点难……问题:从电话号码打出所有单词
请教一道leetcode的新题LeetCode上word search问题的几个例子不对
leetcode-- scramble stringfacebook的面试题
急问F家面试一题interleave string 的题目
相关话题的讨论汇总
话题: int话题: freq话题: string话题: distance话题: used