結果
問題 |
No.927 Second Permutation
|
ユーザー |
![]() |
提出日時 | 2020-02-03 21:26:29 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 672 ms / 2,000 ms |
コード長 | 795 bytes |
コンパイル時間 | 11,054 ms |
コンパイル使用メモリ | 216,348 KB |
実行使用メモリ | 8,576 KB |
最終ジャッジ日時 | 2024-09-19 06:26:27 |
合計ジャッジ時間 | 20,163 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 27 |
ソースコード
package main import ( "fmt" "sort" ) func main() { var x string fmt.Scan(&x) m := make(map[int]int, 0) for i := 0; i < len(x); i++ { m[int(x[i]-'0')]++ } if (len(m)) == 1 { fmt.Println(-1) return } ks := make([]int, 0) for k := range m { ks = append(ks, k) } sort.Sort(sort.Reverse(sort.IntSlice(ks))) maxs := "" for i := range ks { for j := 0; j < m[ks[i]]; j++ { maxs += string('0' + byte(ks[i])) } } // fmt.Println("x", x, "maxs", maxs) var s string for i := len(maxs) - 1; i-1 >= 0; i-- { // fmt.Println("found diff on i", i) if maxs[i-1] != maxs[i] { s = maxs[0:i-1] + string(maxs[i]) + string(maxs[i-1]) if i+1 < len(maxs) { s += string(maxs[i+1:]) } break } } if s[0] == '0' { fmt.Println(-1) } else { fmt.Println(s) } }