交换相邻字符(CharBuffer)

摘自thinking in java:

public class UsingBuffers {    private static void symmetricScramble(CharBuffer buffer) {        while (buffer.hasRemaining()) {            buffer.mark();            char c1 = buffer.get();            if(buffer.hasRemaining()) {                char c2 = buffer.get();                buffer.reset();                buffer.put(c2).put(c1);            }else {                buffer.reset();                buffer.put(c1);            }        }    }    public static void main(String[] args) {        char[] data = "UsingBuffers7".toCharArray();        ByteBuffer bb = ByteBuffer.allocate(data.length * 2);        CharBuffer cb = bb.asCharBuffer();        cb.put(data);        System.out.println(cb.rewind());        symmetricScramble(cb);        System.out.println(cb.rewind());    }

				
时间: 2024-10-08 02:59:28

交换相邻字符(CharBuffer)的相关文章

[Swift]LeetCode777. 在LR字符串中交换相邻字符 | Swap Adjacent in LR String

In a string composed of 'L', 'R', and 'X'characters, like "RXXLRXRXL", a move consists of either replacing one occurrence of "XL" with "LX", or replacing one occurrence of "RX" with "XR". Given the startin

777.在LR字符串中交换相邻字符

在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作.一次移动操作指用一个"LX"替换一个"XL",或者用一个"XR"替换一个"RX".现给定起始字符串start和结束字符串end,请编写代码,当且仅当存在一系列移动操作使得start可以转换成end时, 返回True. 示例 : 输入: start = "RXXLRXRXL", en

双链表交换相邻结点

Swap(LinkNode low,LinkNode high)  //交换两个结点 { low->prior->next = high;high->prior = low->prior; high->next->prior = low; low->next = high->next; high->next = low; low->prior = high;                          }

[C++]LeetCode: 109 Swap Nodes in Pairs (交换相邻节点位置)

题目: Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2->3->4, you should return the list as 2->1->4->3. Your algorithm should use only constant space. You may not modify the values in the list

[CSP-S模拟测试]:字符交换(贪心+模拟)

题目传送门(内部题136) 输入格式 输入文件第一行为两个正整数$n,k$,第二行为一个长度为$n$的小写字母字符串$s$. 输出格式 输出一个整数,为对字符串$s$进行至多$k$次交换相邻字符的操作后,字符串$s$可能达到的最大的$m$指标. 样例 样例输入: 6 3abacba 样例输出: 3 数据范围与提示 对于$40\%$的数据,满足$n\leqslant 10$. 对于$70\%$的数据,满足$n\leqslant 200$. 对于$100\%$的数据,满足$1\leqslant n\

快速提高 Vi/Vim 使用效率的原则与途径

Vi/Vim 是所有 Unix/Linux 操作系统默认配备的编辑器.因其强大的功能和高效的操作,Vi/Vim 也成为众多 Unix/Linux 用户.管理员必须掌握并熟练使用的编辑工具之一.尤其是在没有图形界面的情况下,更是离不开 Vi/Vim.Vi/Vim 命令非常多.用法极为灵活,掌握起来有一定的难度.本文作者将结合自己的使用经验,分七个方面着重介绍哪些原则.途径或命令能快速提高 Vi/Vim 文件编辑效率,从而达到事半功倍的效果. 引言 Vi 最初是由 Bill Joy 在 1976 年

编辑距离及编辑距离算法 (一)摘自http://www.cnblogs.com/biyeymyhjob/archive/2012/09/28/2707343.html

编辑距离及编辑距离算法 编辑距离概念描述: 编辑距离,又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符. 例如将kitten一字转成sitting: sitten (k→s) sittin (e→i) sitting (→g) 俄罗斯科学家Vladimir Levenshtein在1965年提出这个概念. 问题:找出字符串的编辑距离,即把一个字符串s1最少经过多少步操作变成编程字符串

C语言 · 完美的代价

基础练习 完美的代价 时间限制:1.0s   内存限制:512.0MB 锦囊1 使用贪心算法. 锦囊2 从左到右枚举每个字符,移动对应字符.个数为单的字符放中间. 问题描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的.小龙龙认为回文串才是完美的.现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串. 交换的定义是:交换两个相邻的字符 例如mamad 第一次交换 ad : mamda 第二次交换 md : madma 第三次交换 ma : mada

【转载】编辑距离及编辑距离算法

转载在:http://www.cnblogs.com/biyeymyhjob/archive/2012/09/28/2707343.html 编辑距离概念描述: 编辑距离,又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符. 例如将kitten一字转成sitting: sitten (k→s) sittin (e→i) sitting (→g) 俄罗斯科学家Vladimir Leven