在字符串中搜索单词并反转保持大小写的字符串,而不使用内置函数

时间:2012-07-14 08:51:32

标签: c# c

我真的很困惑这个问题。只是为了清除它不是作业,而是在面试时提出的一个问题。我尝试了很多方法来了解如何做到这一点,但却无法做到这一点

这是问题

假设他们是一个字符串

"Patient Bond is the best bond in the world."

现在我希望在不使用内置函数和维护案例的情况下找到并反转患者和债券这个词。

输出现在应该是

"tneitaP dnoB is the best dnob in the world. "

我正在使用c,但它在我的脑海中如何做到这一点。所以我切换到C#但结果是一样的。

所以如果编写代码,任何人都可以指导我甚至更好。

我现在是一名成员,我知道堆栈溢出并不能解决整个解决方案,但只是帮助我解决问题。但我真的坚持这个问题而不知道该怎么做。 所以请帮帮我

提前致谢。

编辑:

说真的,我不知道怎么做。 好的,不要解决问题,但也许有人可以就如何做到这一点提出想法。

修改2

现在这里有一个完美的解决方案,但仍然有一些内置的功能 我仍在努力编码它们,但暂时还是为了再次打开问题。 现在问题是可以通过其他方法来完成吗?这就是我想出的。

class Program
    {
        static void Main(string[] args)
        {
            string ret = "";
            string ar = "Patient Bond is the best bond";
            foreach (string bar in ar.Split2(" "))
            {
                if (bar.ToLower() == "patient" || bar.ToLower() == "bond")
                    ret = ret + StringExtensions.ReverseMe(bar) + " ";
                else
                {
                    ret = ret + bar + " ";
                }

            }
            Console.WriteLine(ret);
            Console.ReadLine();
        }


    }

    public static class StringExtensions
    {
        public static IEnumerable<string> Split2(this string source, string delim)
        {
            // argument null checking etc omitted for brevity

            int oldIndex = 0, newIndex;
            while ((newIndex = source.IndexOf(delim, oldIndex)) != -1)
            {
                yield return source.Substring(oldIndex, newIndex - oldIndex);
                oldIndex = newIndex + delim.Length;
            }
            yield return source.Substring(oldIndex);
        }

        public static string ReverseMe(string abc)
        {
            StringBuilder sb = new StringBuilder();
            int i = abc.Length - 1;
            while (i != -1)
            {
                sb.Append(abc[i--]);
            }
            string sbstring = sb.ToString();
            return sbstring;
        }
    }

我尊重堆栈溢出,因为它让我学到了很多东西,我无法拥有。我会说,如果一个人请求帮助,不要只是嘲笑他们说你没有技能试着帮助他们出。我做同样的事情并希望别人这样做。如果我听起来有点刺耳,我很抱歉。

1 个答案:

答案 0 :(得分:4)

如果你在面试中这样做,并且他们知道你是一名新毕业生或缺乏经验,那么他们正在寻找你分析问题的能力。您没有在问题中提供一些分析问题的尝试。

在这里,我描述了一种可能的方法:

如果忽略案例的问题看起来有点粗糙,请先解决问题,假设所有字母都是相同的情况。

现在,使用内置函数或标准库解决问题。这将向进行访谈的人员证明您了解编程语言,并知道如何使用可用的工具。

完成后,您将查看您使用的功能,并考虑如何自己实现它们。草拟每个伪代码。

然后,考虑需要做哪些更改才能使这些功能在混合情况下工作。