-6

我真的对这个问题感到困惑。只是为了澄清它不是功课,而是面试时提出的问题。我尝试了很多只是想知道如何做,但无法这样做

这是问题所在

假设它们是一个字符串

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

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

输出现在应该是

"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;
        }
    }

我尊重堆栈溢出,因为它让我学到了很多我无法拥有的东西。我要说的是,如果有人寻求帮助,不要只是嘲笑他们说你没有技能尝试帮助他们。我也这样做,并希望其他人也这样做。如果我听起来有点苛刻,我很抱歉。

4

1 回答 1

4

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

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

如果忽略大小写的问题看起来有点粗糙,请先假设所有字母大小写相同来解决问题。

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

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

然后,考虑需要进行哪些更改以允许这些功能在混合情况下工作。

于 2012-07-14T09:22:21.477 回答