問題のリンクはこちら
問題文
文字列が与えられるので、"."で分割したときの最後の要素を出力してください
解法
python
Pythonだと、split関数なるものがあるので、splitしてから添字-1を取得することでACとなります
s=input() print(s.split(".")[-1])
C++
C++では、文字列のsplitが無いのでfor文で回して1文字ずつ見ていくことが有用です
また、split関数をあらかじめライブラリとして登録しておくことで、楽に解くことが出来るかもしれません
こちらが、c++のsplit関数です
void split(vector<string> &elems, const string &s, char delim) { stringstream ss(s); string item; while (getline(ss, item, delim)) { if (!item.empty()) elems.push_back(item); } }
こちらを参考にしました
これを使用することで以下のようになりました
#include <bits/stdc++.h> using namespace std; #define rep(i, n) for (ll i = 0; i < (n); ++i) #define all(a) (a).begin(), (a).end() #define rall(a) (a).rbegin(), (a).rend() #define yesNo(b) ((b) ? "Yes" : "No") using ll = long long; using ull = unsigned long long; string alphabet = "abcdefghijklmnopqrstuvwxyz"; string ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; const double pi = 3.141592653589793; int smallMOD = 998244353; int bigMOD = 1000000007; void split(vector<string> &elems, const string &s, char delim) { stringstream ss(s); string item; while (getline(ss, item, delim)) { if (!item.empty()) elems.push_back(item); } } int main() { int a, b; string s; cin >> s; vector<string> elem; split(elem, s, '.'); cout << elem.back() << endl; return 0; }
scratch(おまけ)
なんとなく、scratchでも解いてみました
1文字ずつループしてみて、もし"."があれば変数の上書きで対応しました
https://scratch.mit.edu/projects/960773760/