心动提前批第一题 本地AC,求大佬指点哪里出错

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <sstream>
#include <list>
using namespace std;

bool Compare(string &S,string &a,string &b)
{
	bool flag = false;
	int i = 0;
	int Number = min(a.size(),b.size());
	for(i; i < Number;i++)
	{
		if(S.find(a[i]) > S.find(b[i]))
		{
			flag = true;
			break;
		}
	}
	if(i == Number)
		flag = false;
	return flag;
}

void customString(string &S, vector<string> &strV) 
{
	for(int i = 0; i < strV.size();i++)
	{
		for(int j = 0 ; j < strV.size() - i -1;j++)
		{
			if(Compare(S,strV[j],strV[j+1]))
			{
				string index = strV[j];
				strV[j] = strV[j+1];
				strV[j+1] = index;
			}
		}
	}
}


int main()
{
	string str;
	getline(cin,str);
	int N = 0;
	cin>>N;
	getchar();
	vector<string> strV(N);
	for(int i = 0; i < N;i++)
	{
		string Temp;
		getline(cin,Temp);
		strV[i] = Temp;
	}

	customString(str,strV);
	for(auto x : strV)
	{
		cout<<x<<endl;
	}	
	return 0;
}
思路是先存放S字符串,然后使用自定义函数查找每个字符串从第一个开始的字符在S的位置,用.find()函数,本地测试三个用例没问题,但是编译器直接case 0%。
求解
#笔试题目##心动网络#
全部评论
我也是,测试全过,就是调试0%
点赞 回复
分享
发布于 2019-08-29 21:08
最后一个例子也过?
点赞 回复
分享
发布于 2019-08-29 21:11
小红书
校招火热招聘中
官网直投
你直接用map做个字典多方便啊,算法复杂度也能降不少啊
点赞 回复
分享
发布于 2019-08-30 14:11
#include<iostream> #include<string> #include<vector> #include<map> #include<algorithm> using namespace std; vector<string> vi; map<char, int> dict; string str; int n; bool cmp(string A, string B) { int len = min(A.length(), B.length()); for (int i = 0; i < len; i++) { if (A[i] != B[i]) return dict[A[i]] <= dict[B[i]]; } return A.length() < B.length(); } int main(void) { while (getline(cin, str)) { cin >> n; cin.ignore(); string temp; temp.clear(); vi.clear(); for (int i = 0; i < n; i++) { temp.clear(); getline(cin, temp); vi.push_back(temp); } dict.clear(); for (int i = 0; i < 26; i++) { dict[str[i]] = i; } sort(vi.begin(), vi.end(), cmp); for (int i = 0; i < n; i++) { cout << vi[i]; if (i < n - 1) cout << endl; } } return 0; } 100%
点赞 回复
分享
发布于 2019-08-30 14:51

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务