.netDecoder
BAN USERC# Developer
- 2of 2 votes
Answers0 1 ?
- .netDecoder in United States
? wildcard for 0 or 1
"01?"
010 011
Example:
01?0?
Will produce
01000
01100
01001
01101| Report Duplicate | Flag | PURGE
Google Software Engineer Algorithm
C# Solution
public static string ReverseByWord(string input)
{
if (string.IsNullOrEmpty(input))
{
return string.Empty;
}
var charIndex = input.Length - 1;
var returnValue = new StringBuilder();
var currentWord = string.Empty;
while (charIndex >= 0)
{
if (input[charIndex] != ' ')
{
currentWord = currentWord + input[charIndex];
}
if (input[charIndex] == ' ' || charIndex == 0)
{
//complete the word in reverse string.
var counter = currentWord.Length - 1;
while (counter >= 0)
{
returnValue.Append(currentWord[counter]);
counter--;
}
currentWord = "";
if (charIndex != 0)
{
returnValue.Append(" ");
}
}
charIndex--;
}
return returnValue.ToString();
}
C# Solution with in place reverse.
public static int[] ReverseByGroupSize(int[] input, int groupSize)
{
if (input == null)
{
return null;
}
if (groupSize == 1)
{
return input;
}
var length = 0;
while (length < input.Length)
{
var startIndex = length;
var endIndex = Math.Min(length + groupSize, input.Length);
while (startIndex < endIndex - 1)
{
input[startIndex] = input[startIndex] + input[endIndex - 1];
input[endIndex - 1] = input[startIndex] - input[endIndex - 1];
input[startIndex] = input[startIndex] - input[endIndex - 1];
endIndex--;
startIndex++;
}
length += groupSize;
}
return input;
}
C# Solution
public static int[] ReverseByGroupSize(int[] input, int groupSize)
{
if (input == null)
{
return null;
}
if (groupSize == 1)
{
return input;
}
var length = 0;
while (length < input.Length)
{
var startIndex = length;
var endIndex = Math.Min(length + groupSize, input.Length);
while (startIndex < endIndex - 1)
{
var x = input[startIndex];
var y = input[endIndex - 1];
input[endIndex - 1] = x;
input[startIndex] = y;
endIndex--;
startIndex++;
}
length += groupSize;
}
return input;
}
C# Solution with Dictionary and Linq
public static char FindFirstNonRepeatedCharWithExtraSpace(string input)
{
if (string.IsNullOrEmpty(input))
{
return char.MinValue;
}
var chars = new Dictionary<char, int>();
for (int i = 0; i < input.Length; i++)
{
if (input[i] == ' ')
{
continue;
}
var key = char.ToLower(input[i]);
if (chars.ContainsKey(key))
{
chars[key]++;
}
else
{
chars.Add(key, 1);
}
}
Console.WriteLine("FindFirstNonRepeatedChar - " + chars.FirstOrDefault(k => k.Value == 1).Key);
return chars.FirstOrDefault(k => k.Value == 1).Key;
}
C# Solution
public static string AlphabetCounter(string input)
{
if (string.IsNullOrEmpty(input))
{
return string.Empty;
}
char previousChar = char.MinValue;
var counter = 0;
var stringOutput = new StringBuilder();
for (int i = 0; i < input.Length; i++)
{
if (input[i] != previousChar)
{
counter = 1;
previousChar = input[i];
stringOutput.Append(input[i]).Append(counter);
}
else
{
stringOutput = stringOutput.Remove(stringOutput.Length - 1, 1);
counter++;
stringOutput.Append(counter);
}
}
Console.WriteLine(stringOutput);
return stringOutput.ToString();
}
public static string ReverseWord(string input)
{
if (string.IsNullOrEmpty(input))
{
return string.Empty;
}
var length = input.Length - 1;
var returnValue = new StringBuilder();
var lastIndex = length;
while (length >= 0)
{
if (input[length] == ' ')
{
var word = input.Substring(length + 1, (lastIndex - length));
returnValue = returnValue.Append($"{word} ");
lastIndex = length;
}
if (length == 0)
{
var word = input.Substring(length, (lastIndex - length));
returnValue = returnValue.Append(word);
lastIndex = length;
}
length--;
}
return returnValue.ToString();
}
public static string ReverseWord(string input)
{
if (string.IsNullOrEmpty(input))
{
return string.Empty;
}
var length = input.Length - 1;
var returnValue = new StringBuilder();
var lastIndex = length;
while (length >= 0)
{
if (input[length] == ' ')
{
var word = input.Substring(length + 1, (lastIndex - length));
returnValue = returnValue.Append($"{word} ");
lastIndex = length;
}
if (length == 0)
{
var word = input.Substring(length, (lastIndex - length));
returnValue = returnValue.Append(word);
lastIndex = length;
}
length--;
}
return returnValue.ToString();
}
C# Solution
public static string ReverseWord(string input)
{
if (string.IsNullOrEmpty(input))
{
return string.Empty;
}
var length = input.Length - 1;
var returnValue = new StringBuilder();
var lastIndex = length;
while (length >= 0)
{
if (input[length] == ' ')
{
var word = input.Substring(length + 1, (lastIndex - length));
returnValue = returnValue.Append($"{word} ");
lastIndex = length;
}
if (length == 0)
{
var word = input.Substring(length, (lastIndex - length));
returnValue = returnValue.Append(word);
lastIndex = length;
}
length--;
}
return returnValue.ToString();
}
had the same solution in C#
private static void wildcardReplace(string source, string currentSource, int startIndex, ref List<string> permutation)
{
if (startIndex == source.Length)
{
permutation.Add(currentSource);
return;
}
if ('?' == source[startIndex])
{
wildcardReplace(source, currentSource + '0', startIndex + 1, ref permutation);
wildcardReplace(source, currentSource + '1', startIndex + 1, ref permutation);
return;
}
wildcardReplace(source, currentSource + source[startIndex], startIndex + 1, ref permutation);
}
Yes
- .netDecoder May 08, 2015public static bool IsPalindrome(string source, bool alphaNumericOnly = true)
{
if (string.IsNullOrEmpty(source))
{
return false;
}
var endPointer = source.Length-1;
var startPointer = 0;
while (startPointer < endPointer)
{
//get the char ascii and minus 'a' value - so that we get 0 to 26 alphabets
//ignore case of course.
var valA = Char.ToLower(source[startPointer]) - 'a';
var valB = Char.ToLower(source[endPointer]) - 'a';
if (valA < 0 || valA > 26)
{
startPointer++;
}
else if (valB < 0 || valB > 26)
{
endPointer--;
}
else if (valA != valB)
{
return false;
}
else {
startPointer++;
endPointer--;
}
}
return true;
}
C# Solution
Tests:
"Let's take LeetCode contest", "take", -> 6
"Let's take LeetCode contest", "Leet" -> 11
"cdcde", "cde" -> 2
"cdcde", "cdex", -> -1
"cd", "cdex", -> -1
"", "sdsd" -> -1
"ssss", "", -> -1
- .netDecoder June 22, 2017