sdfs

来源:互联网 发布:高仿拉勾网 php源码 编辑:程序博客网 时间:2024/05/15 23:43
--region *.lua
--Date
--此文件由[BabeLua]插件自动生成
--[[
4.自定义一个字符串,输出该字符串中字符的所有组合
--]]




--6.请实现函数argtostring将可变参数转换为字符串




function zhuhe(str)
 
            --char[] lv_Char = str.ToCharArray();
            lv_Char=strToTable(str);
          --  List<char> list = new List<char>();
             list={};
            for  i = 1,#lv_Char, 1 do
                Combine(lv_Char,1,i,list,#lv_Char);
                --重置lv_char
                 lv_Char=strToTable(str);
                 list={};
            end
end


function  strToTable(str)
   local tb={}
 for st in string.gmatch(str,"%a") do
         -- print_string(st);
          table.insert(tb,st);
          end
          return tb;
end


function Combine(v_Char,v_Start,v_ResultLength,list, length)


     if (v_ResultLength == 0) then
            
                lv_TempCombine ="";
                for  j = 1, #list,1  do
                    lv_TempCombine=lv_TempCombine..list[j] ;
                end
                --先不管
                --textBox2.Text += lv_TempCombine + "   ";
                local retm=lv_TempCombine.."";
                print_string(retm);
                return;
           
            end


            if (length== #list) then
                return;
            end
           -- list.Add(v_Char[v_Start]);
           table.insert(list,v_Char[v_Start]);
            Combine(v_Char,v_Start,v_ResultLength-1,list,length);
           -- list.Remove((char)v_Char[v_Start]);
           table.remove(v_Char,v_Start);
            Combine(v_Char,v_Start,v_ResultLength,list,length);
end
---------------------------------------------------------------------


function copy(table)--复制table
    if (type(table) ~= type(table)) then
        return nil;
    end
    local ntable = {};
    for i,v in pairs(table) do
        local vtype = type(v);
        if (vtype == type(table)) then
            ntable[i] = copy(v);
    
        else
            ntable[i] = v;
        end
    end
    return ntable;
end
 
function permutation(t, st)--递归
    if #t == 1 then                               
        st = st .. t[1]                            
        print_string(st)
    else                                          
        local i
        for i = 1, #t do                          
            local nt, ns
            ns = st .. t[i]
            nt = copy(t)                   
            table.remove(nt, i)                     
            permutation(nt, ns)                      
        end
    end
end




-- 主程序
function t4()
                                     
    str = "wordabc"                                                                         
    t = strToTable(str);                                             
    st=""
    permutation(t, st)            
end
--endregion


--[[
--调用方式
    local str = argtostring(1,"hello",7.5);
   
      print_string("str结果为:"..str);
--]]
--endregion
0 0