-6

私はこの問題に本当に混乱しています。明確にするために、それは宿題ではなく、面接で尋ねられる質問です. 私はそれを行う方法についてのアイデアを得るために多くのことを試みましたが、そうすることができませんでした

ここに問題があります

それらが文字列であるとします

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

ここで、組み込み関数を使用せずにケースを維持せずに、Patient と Bond という単語を検索して反転させたいと考えています。

出力は次のようになります。

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

私はcを使用していましたが、それをどのように行うかについて頭を悩ませていました。だから私はC#に切り替えましたが、結果は同じでした。

誰でも私を導くことができますか、コードを書くとさらに良くなります。

私はしばらく前からメンバーであり、スタックオーバーフローが解決策全体を解決するわけではなく、問題を解決するのに役立つだけであることを知っています。しかし、本当に私はこの問題で立ち往生しており、何をすべきかわかりません。だから私を助けてください

前もって感謝します。

編集:

真剣に私はそれを行う方法がわかりません。OK、質問を解決しませんが、誰かがそれを行う方法についてアイデアを提供できるかもしれません。

編集 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

あなたが面接でこれを行っていて、彼らがあなたが新卒または経験の浅いことを知っている場合、彼らはあなたの問題を分析する能力を求めています. 問題を分析するための試みを質問で提供していません。

ここでは、考えられる 1 つのアプローチについて説明します。

大文字と小文字を区別しない問題が少し大雑把に思える場合は、最初にすべての文字が同じ大文字と小文字であると仮定して問題を解決してください。

次に、組み込み関数または標準ライブラリを使用して問題を解決します。これにより、あなたがプログラミング言語を理解し、利用可能なツールの使い方を知っていることを面接担当者に示すことができます。

それが終わったら、使った関数を見て、自分で実装する方法を考えます。それぞれの疑似コードをスケッチします。

次に、これらの関数が大文字と小文字が混在するシナリオで動作できるようにするには、どのような変更を行う必要があるかを考えてください。

于 2012-07-14T09:22:21.477 に答える