結果
| 問題 |
No.225 文字列変更(medium)
|
| コンテスト | |
| ユーザー |
fmhr
|
| 提出日時 | 2015-06-12 23:03:43 |
| 言語 | Go (1.23.4) |
| 結果 |
AC
|
| 実行時間 | 22 ms / 5,000 ms |
| コード長 | 879 bytes |
| コンパイル時間 | 14,182 ms |
| コンパイル使用メモリ | 227,380 KB |
| 実行使用メモリ | 9,984 KB |
| 最終ジャッジ日時 | 2024-12-24 10:08:58 |
| 合計ジャッジ時間 | 13,801 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 22 |
ソースコード
package main
import (
"fmt"
"strings"
)
func main() {
var n, m int
var S, T string
fmt.Scan(&n, &m, &S, &T)
s:= strings.Split(S,"")
t:= strings.Split(T,"")
fmt.Println(lesvenshteinDistance(s, t))
}
func lesvenshteinDistance(str1 []string, str2 []string)int{
d := makeDoubleSliceInt(len(str1)+1, len(str2)+1)
for i1 :=0; i1<=len(str1);i1++{
d[i1][0]=i1
}
for i2:=0; i2<=len(str2);i2++{
d[0][i2] = i2
}
var cost int
for i:=1;i<len(str1)+1;i++{
for j:=1;j<len(str2)+1;j++{
if str1[i-1]==str2[j-1]{
cost=0
}else{
cost=1
}
d[i][j]=min(d[i-1][j]+1, min(d[i][j-1]+1, d[i-1][j-1]+cost))
}
}
//fmt.Println(d)
return d[len(str1)][len(str2)]
}
func makeDoubleSliceInt(y, x int) [][]int {
ss := make([][]int, y)
for i := range ss {
ss[i] = make([]int, x)
}
return ss
}
func min(a, b int) int {
if a < b {
a, b = b, a
}
return b
}
fmhr