[C++]對字串向量排序
讓字串向量首先按字串長度進行排序,長度短的在前,長的在後。如果長度相等則按字典序排序,並移除重複的字串。
去重複並按字典序排序:
void elimDumps(vector<string> &words) { // 按字典序排序 sort(words.begin(), words.end()); // unique重排輸入範圍,使得每個單詞只出現一次 // 並排列在範圍的前部,返回指向不重複區域之後一個位置的迭代器 auto end_unique = unique(words.begin(), words.end()); // 刪除重複單詞 words.erase(end_unique, words.end()); }
比較函式,用來按長度排序單詞:
bool isShorter(const string &s1, const string &s2)
{
return s1.size() < s2.size();
}
主函式:
int _tmain(int argc, _TCHAR* argv[]) { // 建立並初始化字串向量 vector<string> words{ "aaa", "c", "eeee", "b", "cccc", "c" }; // 移除重複單詞並按字典序排序 elimDumps(words); // 將向量按字串大小排序,使用穩定排序演算法保持相同長度的單詞按字典序排列 stable_sort(words.begin(), words.end(), isShorter); for (auto &s : words) { cout << s << endl; } return 0; }
程式執行結果:
相關推薦
[C++]對字串向量排序
讓字串向量首先按字串長度進行排序,長度短的在前,長的在後。如果長度相等則按字典序排序,並移除重複的字串。 去重複並按字典序排序: void elimDumps(vector<string> &words) { // 按字典序排序 sort(words
java 對字串進行排序
輸入字串 進行排序 我們需要先將字串變成陣列,然後進行排序 程式碼 private static char[] stringSort(String s) { char [] charNumber = new char[s.length()]; for (int i = 0;
c++對vector進行排序,並返回索引值
測試程式碼:(對向量進行排序,取一定範圍內的數值) vector<int> vec = {5,31,9,11,8,21,9,7,4};  
C/C++對字串常量的處理策略
#include<stdio.h> char *a="Hello"; extern void func(); int main() { char *b="Hello"; ch
C++ 對字串處理方式整理
判斷字元是英文還是漢字 /* brief 判斷字元是英文還是漢字 param ch 字元(位元組) return true:是英文;false:是中文 */ static bool isEngli
c++對map進行排序
最近在PAT刷題,其中一道題月餅 (25)需要用到對價格進行排序,但是排序後要用到價格對應的總售價。因而可以考慮用關聯容器進行求解,map是比較合適這題的資料結構。 map是用來存
C++和C對字串操作總結
一 c語言的字串 c語言中沒有字串這個資料型別,用兩種方法來表示字串,第一種是字元陣列char s[],第二種是字元指標char *s, 兩者有區別,不能任務是一樣的,區別如下(不完整,後期再慢慢補充) 1 初始化和賦值 char[]字串賦值c語言中可以用
sql對字串進行排序
tp5寫法: $gold = Db::table('table')->order('CAST(需要排序的欄位 AS UNSIGNED) desc')->limit(10)->select(); 原生寫法: select * from table OR
Java:通過TreeSet,Comparator實現對字串的排序。
TreeSetTest.java import java.util.Comparator; import java.util.Set; import java.util.TreeSet; public class TreeSetTest { publ
數串: 對字串排序(C++11標準)
題目描述 設有n個正整數,將他們連線成一排,組成一個最大的多位整數。 如:n=3時,3個整數13,312,343,連成的最大整數為34331213。 如:n=4時,4個整數7,13,4,246連線
C語言 對輸入的一個字串進行排序
#include <stdlib.h> #include <stdio.h> #include<string.h> void main() { char s
[C#] 對List進行分組排序後輸出
pos 學生 new C# src key 輸出 分組 groupby Student 類: public class Student { public int ID { get; set; } public string
☆ C/C++ 字串的排序、貼上與轉型
因為程式碼不是在一個檔案中,不方便貼在部落格頁面上,程式碼我已上傳到我的資源中,需要的可以直接下載使用: 資源地址:https://download.csdn.net/download/qq_42292831/10734117 程式碼基於VS2010編寫,在VS2010以下版本無法直接執
C語言中對字串的操
最近對於C語言接收到的資料(字串)處理比較多。 字串:零個或多個字元組成的有限序列。假設:S="abcd1234efghmn",其中S是串列埠,字串中的字元可以是字元、數字或其他字元。 #include <string.h> #include <stdio.h>
Mysql中對字串型別的欄位進行數字值排序
ORDER BY `meta_value` 那麼按得分排序得到的結果可能是: 1 10 11 123 1234 2 25 253 3 由於是按字母順序排列,所以123排在了2的前面,顯然不符合我們的要求,那麼怎樣才能按照我們預想的數字順序
C語言: 用遞迴實現對字串的逆置
#include <stdio.h> #include <windows.h> /* 用遞迴實現對字串的逆置 */ void Reverse(char* string) { int len = strlen(string); if (strlen(string)
對字串排序
對字串進行排序的方法,可以複製直接呼叫; 列如A C B E F D G 輸出為 A B C D E F G public static String Sort(String str) { String value = ""; i
Oracle-Mysql中對字串排序
mysql中對字串排序,字串中有數字有漢字,想按數字的大小來進行排序。僅僅用order by排序,效果不是想要的。 sql語句為: select id,dict_name,type_code from t_dictionary where typ
C#中的字串統計排序之dictionary例項應用
問題: 給出一個字串,字串為26個英文大寫字母,要求統計出每個大寫字母出現的次數並且排序。 解答:這裡我想的是先建立一個int型陣列值都為0,一個char型陣列為26個字母,先遍歷字串,然後套一層for迴圈遍歷是否出現了某個字母,如果有,則對應的int陣列計數自增。最後得
C語言利用快速排序(QuickSort)實現對陣列的排序
快速排序是一種交換排序,是對氣泡排序的改進 利用氣泡排序的特性,對目標進行分段冒泡 #include "stdio.h" int a[6];//定義一個數組,長度為6,實際存放5個元素, /** * 快速排序函式 * @param left 最左邊的指標 * @param