質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

359閲覧

Atcoder ABC082B C#

mofu_mofu

総合スコア73

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2019/08/28 11:22

編集2019/08/31 16:02

お世話になっております。
以下のC#コードでABC082Bを解こうとしたらREになりました。

どこらへんが怪しいでしょうか?
また、REになった場合、どのように検討をつければいいのでしょうか。

以上となりますがよろしくお願いいたします。

using System.Linq; using System; class Program { static void Main(string[] args) { string s = Console.ReadLine(); string t = Console.ReadLine(); s = String.Concat(s.OrderBy(c => c)); t = String.Concat(t.OrderByDescending(c => c)); Console.WriteLine(isAlphabetically(s,t) ? "Yes" : "No"); } static bool isAlphabetically(string s, string t) { bool res = false; if (s[0] < t[0]) { res = true; } else if (s[0] == t[0]) { isAlphabetically(s.Substring(1), t.Substring(1)); } return res; } }

追記

ACしたコード

using

1using System; 2 3class Program 4{ 5 static void Main(string[] args) 6 { 7 string s = Console.ReadLine(); 8 string t = Console.ReadLine(); 9 s = String.Concat(s.OrderBy(c => c)); 10 t = String.Concat(t.OrderByDescending(c => c)); 11 12 Console.WriteLine(isSortedAlphabetically(s,t) ? "Yes" : "No"); 13 } 14 15 static bool isSortedAlphabetically(string s, string t) 16 { 17 if (s[0] < t[0]) 18 { 19 return true; 20 } 21 else if (s[0] == t[0]) 22 { 23 if (s.Length == 1 && t.Length == 2) return true; 24 if (s.Length == 2 && t.Length == 1) return false; 25 if (s.Length == 2 && t.Length == 1) return false; 26 if (s.Length == 1 && t.Length == 1) return false; 27 return isSortedAlphabetically(s.Substring(1), t.Substring(1)); 28 } 29 else 30 { 31 return false; 32 } 33 } 34} 35

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自分で入力を作ってローカルで実行し、どこでエラーになるか確かめてください。
ぱっと見、二つの文字列が全く同じものであったら異常終了しそうです。

投稿2019/08/28 11:25

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

isAlphabetically関数から再起呼び出ししていますがその戻り値を使っていません。よって、演算結果に影響するのは先頭の文字だけになります。戻り値を変数resで受けないといけないのでは?

投稿2019/08/31 04:35

nomuken

総合スコア1627

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mofu_mofu

2019/08/31 16:05

ありがとうございます。見直してみたら、再帰しているメソッドをreturnや変数に格納していないことに気づきACできました。else if (s[0] == t[0])の中身がすこし不細工だなあという感覚はありますが...。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問