我试图创建一个函数,它将从用户获取两个字符串并检查它们是否包含相同的字符。例如test和set,这两个字符串都包含字母t和s,因此输出应为public List<DatabaseSource> getListSched() {
text = sharedPreference.getValue2(context);
String shareFact = text.toString();
List<DatabaseSource> schedList= new ArrayList<DatabaseSource>();
// Select All Query
String selectQuery = "SELECT * FROM schedTBL WHERE DueDateTime like " + shareFact;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
DatabaseSource sched= new DatabaseSource();
sched.setId(Integer.parseInt(cursor.getString(0)));
sched.setSubject(cursor.getString(1));
sched.setDescription(cursor.getString(2));
sched.setDueDateTime(cursor.getString(3));
// Adding sched to list
contactList.add(sched);
} while (cursor.moveToNext());
}
// return schedlist
return schedList;
}
。我几个星期前就开始了,所以我在正确执行代码方面遇到了一些麻烦。有人可以解释一下我做错了什么?谢谢大家
public String getValue2(Context context) {
SharedPreferences settings;
String text;
//settings = PreferenceManager.getDefaultSharedPreferences(context);
settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
text = settings.getString("dateselected", null);
return text;
}
答案 0 :(得分:2)
您可以使用
bool contain_same_letters(const std::string& lhs, const std::string& rhs)
{
return std::set<char>(lhs.begin(), lhs.end())
== std::set<char>(rhs.begin(), rhs.end());
}
答案 1 :(得分:0)
equal()
的内部循环错误,应该是:
for (int j = 0; j < second.size(); j++)
if (first[i] == second[j])
而不是
for (int j = j + 1; i < second.length(); i++) {
if (i == j)
答案 2 :(得分:0)
我们可以猜出错误信息(尽管不要让我们!)。您声明了bool equal(char first, char second);
但已定义bool equal(string first, string second)
。因此,当您尝试调用它时,编译器会抱怨参数类型不正确。
您的下一个问题将在运行时,因为equal
的实现无法正常工作。但这是一个算法问题;你应该考虑它应该如何运作。当有一场比赛时你不能回来,但是当一场比赛不匹配时你可以回来。
使用<algorithm>
中的函数还有一个聪明的伎俩,但我不会放弃它。但有一点提示:比较“测试”和“设置”很难,因为字母的顺序不同。