输入应该是一个字符串和一个整数J.该函数需要打印出输入的字符串,但如果一个字符与任何最后的J字符相同,则在其间放置一个X.
DoSomething("AA",2)
应输出AXXA
;在打印相同的字符之前需要打印2个字符。DoSomething("ABB",2)
应输出ABXXB
DoSomething("ABABA",3)
应输出ABXXABXXA
。我首先尝试在PowerShell中执行此操作:
DoSomething -string 'AA' -cool 3
应输出AXXXA
DoSomething -string 'AB' -cool 3
应输出AB
DoSomething -string 'ABA' -cool 3
应该输出ABXXA
DoSomething -string 'AA' -cool 1
应该输出AXA
DoSomething -string 'ABC' -cool 1
应该输出ABC
DoSomething -string 'AAA' -cool 2
应输出AXXAXXA
答案 0 :(得分:0)
我讨厌采访的另一个原因,虽然这是一个相对容易的问题。我不得不坐下来思考一会儿,模拟试着用记事本回答。请注意,此处的技巧是您只需要检查并比较任何时间点的最后val
个字符数。
static void Main()
{
foreach (var chr in PrintWithRepeatRule("ABABA",3))
{
Console.WriteLine(chr);
}
}
IEnumerable<char> PrintWithRepeatRule(string str, int val)
{
var charList = new List<char>();
foreach(var chr in str)
{
for(int i =val-1; i>=0; i--)
{
if(charList.Count < 1)
continue;
var cnt = charList.Count - i-1 ;
if (cnt < 0 || charList.Count< cnt)
continue;
if(charList[cnt] ==chr)
{
for(int j =0; j<(val-i);j++)
charList.Add('-');
}
}
charList.Add(chr);
}
return charList;
}