每行一条输入,格式为 type:ip
type 包括 i d s 分别表示添加,删除,查找
以 end 结尾
输入最多不超过100000行
输出每行一条对应输入
如果是查找,成功请打印true,失败请打印false
如果是添加删除,请打印ok
i:127.0.0.1 i:10.0.0.1 s:10.0.0.1 d:10.0.0.1 s:10.0.0.1 s:127.0.0.1 end
ok ok true ok false true
i:127.0.0.3 i:127.0.0.3 d:127.0.0.4 s:127.0.0.3 i:127.0.0.5 d:127.0.0.5 s:127.0.0.4 i:127.0.0.4 s:127.0.0.3 d:127.0.0.4 end
ok ok ok true ok ok false ok true ok
您的代码已保存 答案错误:您提交的程序没有通过所有的测试用例 case通过率为46.67%#include <bits/stdc++.h> using namespace std; int main() { vector<string>res; vector<int>f; string s; while(cin>>s) { if(s[0]=='i') { res.push_back(s.substr(2,s.size()-2)); f.push_back(0); cout<<"ok"<<endl; } else if(s[0]=='s') { int flag=0; for(long long i=0;i<res.size();i++) { if(res[i]==s.substr(2,s.size()-2)&&f[i]==0) { cout<<"true"<<endl; flag=1; break; } } if(!flag) cout<<"false"<<endl; } else if(s[0]=='d') { for(long long i=0;i<res.size();i++) { if(res[i]==s.substr(2,s.size()-2)&&f[i]==0) { f[i]=1; break; } } cout<<"ok"<<endl; } else break; } return 0; }不知道为啥会这样,劳烦大神们批评指导一波,感激不尽!! 在大佬的指导下,通过了 #include <bits/stdc++.h> using namespace std; int main() { vector<string>res; vector<int>f; string s; map<string,int>mp; while(cin>>s) { if(s[0]=='i') { string str=s.substr(2,s.size()-2); res.push_back(str); mp[str]=1; cout<<"ok"<<endl; } else if(s[0]=='s') { string str=s.substr(2,s.size()-2); if(mp[str]==1) cout<<"true"<<endl; else cout<<"false"<<endl; } else if(s[0]=='d') { string str=s.substr(2,s.size()-2); if(mp[str]==1) mp[str]=0; cout<<"ok"<<endl; } else break; } return 0; }
import java.util.HashSet;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
HashSet<String> set = new HashSet<>();
while (!scanner.hasNext("end")) {
String command = scanner.next();
char c = command.charAt(0);
String ip = command.substring(2);
switch (c) {
case 'i':
set.add(ip);
System.out.println("ok");
break;
case 'd':
set.remove(ip);
System.out.println("ok");
break;
case 's':
System.out.println(set.contains(ip));
break;
}
}
}
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
set<string> S;
while((cin>>s) && (s!="end"))
{
if(s[0]=='i')
{
s=s.substr(2);
S.insert(s);
printf("ok\n");
}
else if(s[0]=='s')
{
s=s.substr(2);
if(S.find(s)!=S.end())
{
printf("true\n");
}
else printf("false\n");
}
else //d
{
s=s.substr(2);
S.erase(s);
printf("ok\n");
}
}
return 0;
} #include <iostream>
#include <string>
#include <set>
using namespace std;
int main(){
string str;
set<string> st;
while(cin >> str){
if(str == "end"){
return 0;
}
//做判断
char c = str[0];
string temp = str.substr(2);
if(c == 'i'){
cout << "ok" << endl;
st.insert(temp);
} else if(c == 'd'){
cout << "ok" << endl;
set<string>::iterator it = st.find(temp);
if(it != st.end()){
st.erase(it);
}
} else{
if(st.find(temp) != st.end()){
cout << "true" << endl;
} else{
cout << "false" << endl;
}
}
}
return 0;
}
""""
借用字典特性
添加、删除、查找,时间复杂度都为O(1)
打印O(n)
"""
import sys
if __name__ == "__main__":
# sys.stdin = open("input.txt", "r")
dic = {}
for line in sys.stdin:
s = line.strip()
if s == 'end': break
if s[0] == 'i':
dic[s[2:]] = True
print("ok")
elif s[0] == 'd':
if s[2:] in dic:
del dic[s[2:]]
print("ok")
elif s[0] == 's':
if s[2:] in dic:
print("true")
else:
print("false")
#include <bits/stdc++.h>
using namespace std;
int main(){
string s;
map<string,bool> M;
while(cin>>s){
if(s=="end")
break;
string ip = s.substr(2);
char op = s[0];
if(op=='i'){
M[ip] = true;
cout<<"ok"<<endl;
}else if(op=='d'){
M[ip] = false;
cout<<"ok"<<endl;
}else if(op=='s'){
if(M.find(ip)==M.end() || M[ip]==false)
cout<<"false"<<endl;
else if(M[ip])
cout<<"true"<<endl;
}
}
return 0;
}
package main
import (
"fmt"
"os"
"bufio"
)
var in=bufio.NewReader(os.Stdin)
func main() {
var s string
cnt:=map[string]bool{}
for{
fmt.Fscan(in,&s)
if s=="end"{
break
}
t,ip:=s[0],s[2:]
if t=='i'{
cnt[ip]=true
fmt.Println("ok")
}else if t=='d'{
delete(cnt,ip)
fmt.Println("ok")
}else{
_,ok:=cnt[ip]
fmt.Println(ok)
}
}
} 思路:使用unorder_map来实现高效的查找。
#include<cstring>
#include<iostream>
#include<unordered_map>
using namespace std;
class Solution {
public:
void insert(string str) {
datasets[str] = 1;
cout << "ok" << endl;
}
void search(string str ) {
if (datasets[str] == 1) {
cout << "true" << endl;
}
else
{
cout << "false" << endl;
}
}
void deletesol(string str) {
datasets[str] = 0;
cout << "ok" << endl;
}
void dealWith(string temp) {
startWith = temp.find(':');
selectWay = temp[startWith-1];
res = temp.substr(startWith + 1);
if (selectWay == 'i') {
insert(res);
}
else if (selectWay == 'd') {
deletesol(res);
}
else
{
search(res);
}
}
private:
char selectWay;
int startWith;
string res;
unordered_map<string,int> datasets;
};
int main() {
string in;
Solution sol;
while (cin >> in) {
if (in == "end") {
break;
}
sol.dealWith(in);
}
}
import java.util.HashMap;
import java.util.Scanner;
/**
* @Date: 2020-05-04 22:54
* @version: 1.0
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
HashMap<String,Boolean> al = new HashMap<>();
while (true){
String s = sc.next();
if ("end".equals(s))
break;
char op = s.charAt(0);
String ip = s.substring(2, s.length());
if (op == 'i'){
al.put(ip,true);
System.out.println("ok");
}else if (op == 'd'){
al.put(ip,false);
System.out.println("ok");
}else
{
if (al.get(ip)==null || al.get(ip)==false)
System.out.println(false);
else
System.out.println(true);
}
}
}
} import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Set<String> values = new HashSet<>();
String ip;
String op;
String str;
Scanner cin = new Scanner(System.in);
while (cin.hasNext()) {
str = cin.next();
if (str.equals("end")) {
return;
}
op = str.substring(0, 1);
ip = str.substring(2);
if (op.equals("i")) {
values.add(ip);
System.out.println("ok");
}
if (op.equals("s")) {
if (values.contains(ip)) {
System.out.println("true");
} else {
System.out.println("false");
}
}
if (op.equals("d")) {
values.remove(ip);
System.out.println("ok");
}
}
}
}
#include <bits/stdc++.h>
using namespace std;
#define Up(i,a,b) for(int i = a; i <= b; i++)
int main()
{
ios::sync_with_stdio(false);
set<string> s; //用来存ip白名单
string str;
while(getline(cin,str) && str!="end")
{
char type = str[0]; //添加i、删除d、查找s
string ip = str.substr(2,str.length()-2);
//cout << ip << endl;
if(type=='i')
{
s.insert(ip);
printf("ok\n");
}
if(type=='s') //查找
{
printf("%s\n",s.count(ip)!=0?"true":"false");
}
if(type=='d') //删除
{
if(s.count(ip)!=0) //这题有bug吧 set中没有这个ip还要你输出ok?!
{
s.erase(s.find(ip));
}
printf("ok\n");
}
}
return 0;
}
#include <stdio.h>
#include <string.h>
#define size_num 100000
#define str_length 20
int max(int a,int b){
return a>b?a:b;
}
int main() {
int i = 0;
int j = 0;
int a = 0;
int str_count = 0;
int str_dcount = 0;
int i_count = 0;
int s_count = 0;
int d_count = 0;
int i_temp;
char str_in[str_length];
char str_temp[str_length];
char print_str[size_num] = { 0 };
int length_str[size_num] = {0};
char store_str[size_num][str_length] = { 0 };
int length = 0;
for (i = 0; i < size_num; i++) {
gets(str_in);
length = strlen(str_in);
length_str[i] = length -2;
i_temp = i;
for (j = 2; j < length; j++) {
str_temp[j - 2] = str_in[j];
}
/* for (j = 0; j < length-2; j++) {
printf("%c", str_temp[j]);
}
printf("\n");*/
if (str_in[0] == 'i') {
print_str[i] = '3';
for (i_count = 0; i_count < length-2; i_count++) {
store_str[i][i_count] = str_temp[i_count];
}
// printf("%c\n", print_str[i]);
/* for (j = 0; j < length - 2; j++) {
printf("%c", store_str[i][j]);
}
printf("\n");*/
}
else if (str_in[0] == 'd') {
print_str[i] = '3';
for (d_count = 0; d_count < i; d_count++) {
str_dcount = 0;
for (j = 0; j <max( length - 2,length_str[d_count]); j++) {
if (str_temp[j] == store_str[d_count][j]) {
str_dcount += 1;
}
}
if (str_dcount == length - 2) {
for (j = 0; j < length - 2; j++) {
store_str[d_count][j] = '0';
}
}
}
/* for (j = 0; j < length - 2; j++) {
store_str[i][j] = '0';
}*/
/* for (j = 0; j < length - 2; j++) {
printf("%c", store_str[i][j]);
}
printf("\n");
printf("%c\n", print_str[i]);*/
}
else if (str_in[0] == 's') {
for (s_count = 0; s_count < i; s_count++) {
str_count = 0;
for (j = 0; j < max(length - 2,length_str[s_count]); j++) {
if (str_temp[j] == store_str[s_count][j]) {
str_count += 1;
}
else
break;
}
if (str_count == length - 2) {
print_str[i] = '1';
break;
}
else
print_str[i] = '2';
}
// printf("%d\n", length - 2);
// printf("%d\n", str_count);
// printf("%c\n", print_str[i]);
// str_count = 0;
}
else if(str_in[0]=='e')
break;
}
/*for (i = 0; i < 10; i++) {
for (j = 0; j < 15; j++) {
printf("%c", store_str[i][j]);
}
printf("\n");
}*/
// printf("%s\n", print_str[0]);
//printf("%s\n", store_str[0][0]);
for (i = 0; i <i_temp; i++) {
if (print_str[i] == '3')
printf("ok\n");
else if (print_str[i] == '1') {
printf("true\n");
}
else if (print_str[i] == '2') {
printf("false\n");
}
}
} import sys
ip = set()
for ss in sys.stdin:
if ss.strip() == "end":
break
typ, addr = ss.split(":")
if typ == "i":
if addr not in ip:
ip.add(addr)
print("ok")
elif typ == "s":
if addr not in ip:
print("false")
else:
print("true")
else:
if addr in ip:
ip.remove(addr)
print("ok")
#include <iostream>
#include <set>
#include <string>
using namespace std;
int main()
{
string ip;
set<string>ipnum;//用一个set存储ip地址,并实现插入,查找,删除
while (cin >> ip) {
if (ip == "end") break;
if (ip[0] == 'i') {
ipnum.insert(ip.substr(2));
cout << "ok" << endl;
}
else if (ip[0] == 's') {
if (ipnum.find(ip.substr(2)) != ipnum.end()) {
cout << "true" << endl;
}
else {
cout << "false"<<endl;
}
}
else {
ipnum.erase(ip.substr(2));
cout << "ok"<<endl;
}
}
return 0;
}