如何检查2个字符串是否包含相同的字符?

时间:2016-09-13 13:19:01

标签: c++

我试图创建一个函数,它将从用户获取两个字符串并检查它们是否包含相同的字符。例如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;
        }

3 个答案:

答案 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>中的函数还有一个聪明的伎俩,但我不会放弃它。但有一点提示:比较“测试”和“设置”很难,因为字母的顺序不同。