ABC066 B - ss
今日の問題
今日の言語
所要時間
21m 56s
私の解答
感想
golang、文字列をそのまま配列として扱えるのは楽ですね。
今回は部分配列を取り出すとき、golangだと s[開始index:終了index+1] だと知らずにずっと悩んでいました。
一度 A Tutor of Go をやったほうがいいかもしれませんね。
s := "0123456789" fmt.Println(s[4:10]) // -> "456789" fmt.Println(s[4:]) // -> "456789" fmt.Println(s[:10]) // -> "0123456789" fmt.Println(s[:]) // -> "0123456789"
参考資料
文字列を配列として扱う
[Golang] 文字列操作サンプル - Qiita
配列
Go言語: スライス(配列)の要素を取り出す方法 - Qiita
文字列比較
hydroculのメモ 2つの文字列を比較するには
whileは拡張されたfor文を使う
golangを基礎から学ぶ 制御構造編 - Qiita
プライバシーポリシー
当サイトに掲載されている広告について
当サイトでは、第三者配信の広告サービス(Googleアドセンス)を利用しています。
このような広告配信事業者は、ユーザーの興味に応じた商品やサービスの広告を表示するため、当サイトや他サイトへのアクセスに関する情報 『Cookie』(氏名、住所、メール アドレス、電話番号は含まれません) を使用することがあります。
またGoogleアドセンスに関して、このプロセスの詳細やこのような情報が広告配信事業者に使用されないようにする方法については、こちらをクリックしてください。
当サイトが使用しているアクセス解析ツールについて
当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。
このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。
このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。
この規約に関して、詳しくはこちらやこちらをクリックしてください。
当サイトへのコメントについて
当サイトでは、スパム・荒らしへの対応として、コメントの際に使用されたIPアドレスを記録しています。
これはブログの標準機能としてサポートされている機能で、スパム・荒らしへの対応以外にこのIPアドレスを使用することはありません。
また、メールアドレスとURLの入力に関しては、任意となっております。
全てのコメントは管理人であるYuki猫が事前にその内容を確認し、承認した上での掲載となりますことをあらかじめご了承下さい。
加えて、次の各号に掲げる内容を含むコメントは管理人の裁量によって承認せず、削除する事があります。
特定の自然人または法人を誹謗し、中傷するもの。
極度にわいせつな内容を含むもの。
禁制品の取引に関するものや、他者を害する行為の依頼など、法律によって禁止されている物品、行為の依頼や斡旋などに関するもの。
その他、公序良俗に反し、または管理人によって承認すべきでないと認められるもの。
最終更新:2019年 12月 3日
ABC064 C - Colorful Leaderboard
今日の問題
今日の言語
所要時間
2時間
2018年の抱負
2017年はこのブログ放置しすぎたので、2018年は何かやります。
一年半ほど職業プログラマとしてphpをガリガリ書いてきて、設計思想とかメモリ効率のいい実装とか、色々知識はついていると自負しているんだけれども、それを全くアウトプットしてないなぁと。
業務に関わる話なのでそのまま書けるわけでもないというのもあるけれど、自宅で全くプログラミングしなくなったのも要因の一つかなぁと。
流石にエンジニアとして死んでるよなぁ、まずいよなぁ、と思ってはいるものの2017年は結局行動しないで終わってしまった……
ので、直近の行動しますよ宣言をここに書いておきます。
1.データベーススペシャリスト試験受けます
2.競プロ始めます
デスペは春試験の合格を目指して頑張ります。
競プロは、1日1問とかのスローペースな感じで毎日PCを開いてコードを書く習慣をつけられたらいいなぁ、と思っています。
[php]phpの文字列比較時に自動型変換されているのを知らなくてハマった話
違う文字列なのに一致する...?
phpは型の制約が緩い分、意図しないところで勝手に型変換されていたりして困っちゃうことが時々あります。
例えば、文字列の比較を==で行うと、以下のような驚きの結果に。
$ echo "5seq" == 5; // true $ echo "3.0" == "3"; // true
これは、==で整数値と文字列を比較する際、文字列を内部処理でint型にキャストしてしまっていることが原因です。
どうすればいいのか?
文字列の比較の際には===を使うことで、明示的にstringでの比較を行うことができます。
$ echo "5seq" === 5; // false $ echo "3.0" === 3; // false
また、数字での比較を明確に行いたいならば、is_numeric()メソッドで文字列が数字であることを保証するという方法が取れます。
formから受け取ったユーザ入力を扱う場合などは、面倒ですが比較の前にこの処理をはさんでおくと確実です。
$str = "5sec"; if(is_numeric($str)) { // ここでfalseになる if($str == 数字) { ... } }
あるいは、扱う文字列が明確に数字である場合などは、あらかじめ明示的にキャストしてしまうという手もあります。
$str = (int)"3min"; if($str == 3) { // true ... }
型が緩いと便利ではありますが、コードを書く際はしっかりと意識しないといけませんね。